2つの座標系があります。 Originの3D座標と、最初の座標系に対する2番目の座標系の軸の3Dベクトルを知っています。次に、最初の座標系を2番目の座標系に変換する回転行列をどのようにして見つけることができますか?
説明されている問題は、次のように解決できます。させて
M = m_11 m_12 m_13
m_21 m_22 m_23
m_31 m_32 m_33
目的の回転行列を示します。が必要です
1 0 0 * M + t = x_x x_y x_z
0 1 0 y_x y_y y_z
0 0 1 z_x z_y z_y
ここで、t
は翻訳を示します。この行列の等価性は、左から、それ自体の逆行列である恒等行列を乗算することで解決できることがわかります。したがって、次の等式が得られます。
M + t = x_x x_y x_z
y_x y_y y_z
z_x z_y z_y
これは、両側からt
を減算して、次のように目的の行列M
を取得することで再配置できます。
M = x_x x_y x_z - t = x_x-t_x x_y-t_y x_z-t_z
y_x y_y y_z y_x-t_x y_y-t_y y_z-t_z
z_x z_y z_y z_x-t_x z_y-t_y z_z-t_z
初期行列は標準ベースの基本ベクトルで構成されているため、これは比較的簡単でした。一般に、それはより難しく、 基底変換 を伴います。これは、基本的に ガウス消去法 で実行できますが、数値的には難しい場合があります。
ソースコードを使用して、その方法を示す記事を執筆しました。簡単な答えは、異なる軸の内積で3x3マトリックスを構築することです
http://www.meshola.com/Articles/converting-between-coordinate-systems
基礎の変更はあなたを助けることができると思う Wikiリンク 。実装は非常に簡単です。
Aを2つの座標系間の関係を定義する4x4行列とします。
次に、2つの間の角度は:
θ= arcos(trace(A)/2.0)