二日も悩んだわりに、結論としては難しくも意外でも無い事に時間を潰してしまったが、とにかく回転は分かったので書く。やりたい事は、ある点を原点の回りで好きな角度だけ回した時に、回った後の座標が知りたいという単純な事だ。
角度を表現するのにはベクトルを使う。簡単に言うと、タテとヨコの比率で角度を表すという事で、道路の標識にあるの登り勾配なんかと考え方は同じだ。計算を簡単にするために、長さが一の単位ベクトルを使う。
で、求め方はこんな感じ。点 P が (Rx, Ry) で現される角度だけ回転した点 Q を求めたい。話を簡単にするために、点 P は半径 1 の円周上にあるという事にする。
まず、求めたい Q の x 座標だが、これは、
OE : OD = OA : OP OE : Rx = Px : 1 = RxPx QC : QD = PA : PO QC : Ry = Py : 1 QC = RyPy Qx = BQ = OE - QC = RxPx - RyPy
y 座標は、
CD : QD = AO : PO CD : Ry = Px : 1 CD = RyPx DE : DO = PA : PO DE : Rx = Py : 1 DE = RxPy Qy = CD + DE = RyPx + RxPy
という事で、めでたく
- Qx = RxPx - RyPy
- Qy = RyPx + RxPy
が求まった。この証明は全然厳密な物では無いけど、図形の雰囲気から、x 要素と y 要素をどんな風に掛けるのか、マイナスはどこに付けるのかが伝わってくると思う。
次は変換の合成と行列、複素数の乗法をやるかな。。。