次の入力から回転行列を構築する直接的な方法はありますか?
標準の垂直参照があるとします。X[1,0,0], Y[0,1,0], Z[0,0,1]
回転行列を回転させて、別の垂直参照に一致させたいとしますX'[a1,b1,c1], Y'[a2,b2,c2], Z'[a3,b3,c3]
。ベクトルは単位ベクトルです。マトリックスが以下のようになる可能性はありますか?
a1, a2, a3
b1, b2, b3
c1, c2, c3
座標系で定義されたポイントを指定すると、それらを回転行列を使用して座標系XYZ
に変換します。一般に、ワールド座標の列に配置されたローカル、、および軸のコンポーネントは、次のようなシステムの変換を表します。X'Y'Z
3x3
a
b
c
local->world
| x_world | | a1 b1 c1 | | x_local |
| y_world | = | a2 b2 c2 | | y_local |
| z_world | | a3 b3 c3 | | z_local |
および逆変換 (行列転置を使用)
| x_local | | a1 a2 a3 | | x_world |
| y_local | = | b1 b2 b3 | | y_world |
| z_local | | c1 c2 c3 | | z_world |
local->world
ここで、回転行列XYZ
を使用して任意の 2 つの座標系の間で変換を行います (この場合は 3x3 単位行列であるX'Y'Z'
ことに注意してください)。上記を連鎖させます。XYZ
point_x'y'z' = transpose(X'Y'Z') * (XYZ) * point_xyz
| x' | | a1 b1 c1 | | x | | a1 x + b1 y + c1 z |
| y' | = | a2 b2 c2 | | y | = | a2 x + b2 y + c2 z |
| z' | | a3 b3 c3 | | z | | a3 x + b3 y + c3 z |
はい、アイデンティティから他の変換への変換は他の変換です。通常、これらは任意の変換を表すため、回転行列とは呼びません。変換は 1 つまたは 2 つの平面でミラーリングされる可能性があるため、回転だけでは変換を達成できない場合があります。
列ベクトルを使用している間、行ベクトルを使用することも完全に可能であることに注意してください。その場合、結果は単に転置され、乗算順序は逆になります。数学的には同じことです。だからあなたのシステムをチェックしてください