DOSEIの日記

技術メモ+日常ログ

座標変換

ある空間の座標系1(例えばワールド座標) から座標系2(例えばカメラ座標)に変換することを考える。

平行移動後、回転

座標系 1 と 2 の関係が、

  • 座標系 1 を並進 t で平行移動し、その後、各軸を回転 R−1 によって、座標系2 に重なる

ただし、t は座標系1からみた座標系2の原点へのベクトルで、 R は各行が、座標系1 における、座標系2 の各軸の方向ベクトルを表す。
このとき、座標系 1 で表された空間の点 X の座標 x1 と座標系2 での座標 x2 との間に

  • x2 = R(x1 − t)

という関係がある。
x1 の同次座標を x1' とすると、

  • x2 = [R|−Rt] x1'

回転後、平行移動

座標系 1 と 2 の関係が、

  • 座標系 1 を R−1 によって回転し、その後並進 t で座標系2 に重なる

とする。ただし、tは座標系1で見た座標系2の原点へのベクトル。
このとき座標変換は
-x1 = R * x2 + t (⇔ x2 = R−1(x1 − t))

  • R * x1 + t = x2

となる。
したがって
-x1 = [R|t] x2'

  • x2 = [R|t] x1'

逆向きに回転後、平行移動

座標系 1 と 2 の関係が、

  • 座標系 2 を R によって回転し、その後並進 t で座標系1 に重なる

とすると、

  • x2 = R * x1 + t

したがって、

  • x2 = [R|t] x1'


…ほんとかなぁ。