👌
127. 一次変換の逆変換
【問題概要】
2次元平面上の点を一次変換(平行移動、回転、拡大縮小)によって別の点に移動させる操作を行った結果の座標と、その一次変換の逆変換を求めるプログラムを実装せよ。
【解説】
一次変換によって移動された点の座標は、以下のように表されます。
(x', y') = (a11x + a12y + b1, a21x + a22y + b2)
ここで、(x, y)は移動前の点の座標、(x', y')は移動後の点の座標、a11, a12, a21, a22は変換行列の係数、b1, b2は平行移動の係数です。
逆変換を求めるためには、上記の式を逆に解いて、(x, y)を(a11, a12, a21, a22, b1, b2)の係数から求める必要があります。具体的には、以下の式を解くことで(x, y)を求めます。
a11x + a12y + b1 = x'
a21x + a22y + b2 = y'
この式を解くためには、行列の逆行列を求める必要があります。ただし、逆行列が存在しない場合もあります(行列式が0の場合など)。
【関連するAtcoderの例題】
「Inversion Transformation」
レーティング難易度(★): 7
ACした回答者に絞った場合のレーティング帯の範囲(数値): 2037 - 3497
レーティング難易度(%): 21.97%
レーティング(数値): 2733
AC率(%): 32.25%
ACしたスコアの高い回答者: kojingharang, hibike
解説ブログ: https://www.planeta.tokyo/abc189f-inversion-transformation/
Discussion