3D回転を表現する方法
幾何学 では、 三 次元における 回転を数学的 変換 として 表現するための様々な 回転形式論 が存在します。物理学では、この概念は 古典力学 に適用され 、回転(または角) 運動学 は純粋に回転する 運動を 定量的に 記述する科学です 。ある瞬間における物体の 向き も、空間における以前の配置からの実際の観測回転ではなく、空間における基準配置からの仮想的な回転として定義されるため、同じツールで記述されます。
オイラーの回転定理 によれば、 剛体 (または固定 原点 を持つ3次元 座標系 )の回転は、 ある軸を中心とした単一の回転で記述されます。このような回転は、少なくとも3つの 実パラメータで一意に記述できます。しかし、様々な理由から、回転を表現する方法は複数存在します。これらの表現の多くは、それぞれが3つ の自由度 しか持たないにもかかわらず、必要最小限の3つのパラメータよりも多くのパラメータを使用します 。
回転表現が用いられる例としては、 コンピュータビジョン が挙げられます。ここでは、 自動 観測者が対象物を追跡する必要があります。剛体を考えてみましょう。 剛体には、物体の局所 座標系の3つの軸を表す3つの 直交単位ベクトルが固定されています。基本的な問題は、これらの3つの 単位ベクトル 、つまり剛体の向きを 、空間における基準配置とみなされる観測者の座標系に対して指定することです。
回転と動き 回転形式論は 、回転 が 参照する 1つの固定点 を持つ ユークリッド空間の固有( 向きを保つ )運動に焦点を当てています。固定点を持つ物理的な運動は重要なケース(例えば、 重心座標系 で記述される運動や 関節 の運動)ですが、このアプローチはすべての運動に関する知識を生み出します。ユークリッド空間の固有運動は、原点の周りの回転と 並進に分解されます。それらの 合成 順序がどのようなもので あっても、「純粋な」回転成分は変化せず、完全な運動によって一意に決定されます。
「純粋な」回転は、 対応する アフィン空間の 点 の写像ではなく、ユークリッド構造を備えた ベクトル空間 における 線型写像 として理解することもできる。言い換えれば、回転形式は、運動のうち3つの自由度を含む回転部分のみを捉え、さらに3つの自由度を含む並進部分は無視する。
コンピュータで回転を数値として表現する場合、 オイラー回転で発生する可能性のある ジンバルロックを回避するため、クォータニオン表現または軸+角度表現を好む人もいます。 [1]
回転行列 上記の 単位ベクトルの三つ組は 基底 とも呼ばれます 。この基底のベクトルの 座標 ( 成分 )を、現在の(回転後の)位置において、基準となる(回転していない)座標軸を用いて指定することで、回転を完全に記述できます。回転基底を形成する3つの単位ベクトル û 、 v̂ 、 ŵ はそれぞれ3つの座標から成り、合計9つのパラメータを生成します。
これらのパラメータは、回転行列 と呼ばれる 3×3 行列 A の要素として表すことができます 。通常、これらのベクトルの座標は行列の列に沿って配置されます(ただし、回転行列の別の定義が存在し、広く使用されていることに注意してください。この定義では、上記で定義されたベクトルの座標が行に沿って配置されます [2] )。 あ = [ あなた ^ × v ^ × わ ^ × あなた ^ y v ^ y わ ^ y あなた ^ z v ^ z わ ^ z ] {\displaystyle \mathbf {A} ={\begin{bmatrix}{\hat {\mathbf {u} }}_{x}&{\hat {\mathbf {v} }}_{x}&{\hat {\mathbf {w} }}_{x}\\{\hat {\mathbf {u} }}_{y}&{\hat {\mathbf {v} }}_{y}&{\hat {\mathbf {w} }}_{y}\\{\hat {\mathbf {u} }}_{z}&{\hat {\mathbf {v} }}_{z}&{\hat {\mathbf {w} }}_{z}\\\end{bmatrix}}}
回転行列の要素はすべて独立しているわけではありません。オイラーの回転定理によれば、回転行列には自由度が 3 つしかありません。
回転行列には次の特性があります。
A は実 直交行列 なので、その各行または各列は 単位ベクトル を表します。 A の 固有値 は、 i が i 2 = −1 という特性を持つ 標準 虚数単位 であるとき です 。 { 1 、 e ± 私 θ } = { 1 、 コス θ + 私 罪 θ 、 コス θ − 私 罪 θ } {\displaystyle \left\{1,e^{\pm i\theta }\right\}=\{1,\ \cos \theta +i\sin \theta ,\ \cos \theta -i\sin \theta \}} A の 行列 式 は +1 であり、その固有値の積に相当します。 A の トレースは 1 + 2 cos θ であり 、その固有値の合計に相当します。 固有値表現に現れる角度 θ は、オイラー軸の角度と角度表現に対応します。固有値 1 に対応する 固有ベクトルは 、付随するオイラー軸です。これは、回転行列を左乗算(回転)しても変化しない唯一の(非零の)ベクトルがオイラー軸であるためです。
上記の性質は、 ( û , v̂ , ŵ )が3次元 直交基底 を形成する ことを別の言い方で表したものと等価です 。これらの記述は合計6つの条件(外積は3つ)から成り、回転行列の自由度は要求どおり3つだけになります。 | あなた ^ | = | v ^ | = | わ ^ | = 1 あなた ^ ⋅ v ^ = 0 あなた ^ × v ^ = わ ^ 、 {\displaystyle {\begin{aligned}|{\hat {\mathbf {u} }}|=|{\hat {\mathbf {v} }}|=|{\hat {\mathbf {w} }}|&=1\\{\hat {\mathbf {u} }}\cdot {\hat {\mathbf {v} }}&=0\\{\hat {\mathbf {u} }}\times {\hat {\mathbf {v} }}&={\hat {\mathbf {w} }}\,,\end{aligned}}}
行列 A 1 と A 2 で表される 2 つの連続する回転は、グループの要素として簡単に組み合わせることができます
(回転するベクトルは右から乗算されるため、順序に注意してください)。 あ 合計 = あ 2 あ 1 {\displaystyle \mathbf {A} _{\text{total}}=\mathbf {A} _{2}\mathbf {A} _{1}}
回転行列を使用するとベクトルを簡単に回転でき、連続した回転を組み合わせるのも簡単なため、回転行列は他の表現よりも簡潔ではありませんが、回転を表現するのに便利で一般的な方法となっています。
オイラー軸と角度(回転ベクトル) オイラー軸と角度によって表される回転の視覚化。 オイラーの回転定理 から、 あらゆる回転は、ある軸を中心とした単一の回転として表現できることが分かります。軸は、回転によって変化しない単位ベクトル(符号を除いて一意)です。角度の大きさも一意であり、その符号は回転軸の符号によって決まります。
軸は 3 次元の 単位ベクトル として表すことができ
、角度はスカラー θ で表すことができます。 e ^ = [ e × e y e z ] {\displaystyle {\hat {\mathbf {e} }}={\begin{bmatrix}e_{x}\\e_{y}\\e_{z}\end{bmatrix}}}
軸は正規化されているため、 自由度は 2つしかありません。角度によって、この回転表現に3つ目の自由度が加わります。
回転を回転ベクトル 、またはオイラーベクトル として表現したい場合があります。 オイラーベクトルは 、方向が軸を指定し、長さが θ である正規化されていない3次元ベクトルです。 r = θ e ^ 。 {\displaystyle \mathbf {r} =\theta {\hat {\mathbf {e} }}\,.}
回転ベクトルは、3つの自由度を表す3つの スカラー 値(その成分)のみで3次元の回転を表現するため、いくつかの文脈で有用です。これは、3つのオイラー角の列に基づく表現にも当てはまります(下記参照)。
回転角 θ が 0 の場合、軸は一意に定義されません。それぞれオイラー軸と角度で表される連続する2つの回転を組み合わせることは単純ではなく、実際にはベクトルの加法則を満たしません。この法則は、有限回転は実際にはベクトルではないことを示しています。回転行列または四元数表記を用いて積を計算し、それをオイラー軸と角度に戻すのが最善です。
オイラー回転 地球のオイラー回転。 固有回転 (緑)、 歳差回転 (青)、 章動回転 (赤) オイラー回転の背後にある考え方は、座標系の完全な回転を、 歳差運動 、 章動運動 、 固有回転 と呼ばれる3つのより単純な構成回転に分割し、それぞれが オイラー角の1つの増分となるようにすることです。外側の行列は参照フレームの軸の1つを中心とした回転を表し、内側の行列は移動フレームの軸の1つを中心とした回転を表すことに注意してください。中央の行列は 、ノード線 と呼ばれる中間軸を中心とした回転を表します 。
しかし、オイラー角の定義は一意ではなく、文献では様々な慣例が用いられています。これらの慣例は、回転が行われる軸とその順序に依存します(球面上の回転は 非可換で あるため)。
使用される規則は通常、連続する回転(合成前)が行われる軸を指定することによって示され、インデックス (1、2、3) または文字 (X、Y、Z) で参照されます。エンジニアリングおよびロボット工学のコミュニティでは、通常、3-1-3 オイラー角が使用されます。独立した回転を合成した後は、軸を中心に回転しなくなることに注意してください。最も外側の行列は他の 2 つを回転させ、2 番目の回転行列をノードのライン上に残し、3 番目の回転行列をボディとともに移動するフレームに残します。3 つの基本的な回転の組み合わせは 3 × 3 × 3 = 27通りありますが、任意の 3D 回転をオイラー角として表すために使用できるのは、そのうち 3 × 2 × 2 = 12 通りだけです。これらの 12 通りの組み合わせにより、表現できる自由度が減ることになる同じ軸(XXY など)の周りの連続した回転が回避されます。
したがって、オイラー角は外部座標系や共動回転体座標系のいずれかではなく、それらの混合で表現されます。この問題を回避するために、他の慣例(例えば、 回転行列 や 四元数 )が使用されます。
航空 学では、 航空機の向きは通常、 z - y ′- x ″ 規則に従った 固有の テイト・ブライアン角 で表現され、それぞれ、 機首方位 、 仰角 、 バンク角 (または同義語として、 ヨー 、 ピッチ 、 ロール )と呼ばれます。
四元数 4 次元の ベクトル空間を形成する 四元数は 、この記事で説明した他の表現に比べていくつかの利点があるため、回転を表現するのに非常に有用であることが証明されています。
回転の四元数表現は、 バーサー (正規化された四元数)として表されます。 q ^ = q 私 私 + q j j + q け け + q r = [ q 私 q j q け q r ] {\displaystyle {\hat {\mathbf {q} }}=q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} +q_{r}={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\\q_{r}\end{bmatrix}}}
上記の定義では、(Wertz 1980) および (Markley 2003) で用いられている慣例に従い、四元数を配列として格納します。(Coutsias 1999) および (Schmidt 2001) などで用いられている別の定義では、「スカラー」項を四元数の最初の要素として定義し、他の要素を1つずつずらします。
オイラー軸の観点から e ^ = [ e × e y e z ] {\displaystyle {\hat {\mathbf {e} }}={\begin{bmatrix}e_{x}\\e_{y}\\e_{z}\end{bmatrix}}}
そして角度 θ ではこのバーサーの成分は次のように表されます。 q 私 = e × 罪 θ 2 q j = e y 罪 θ 2 q け = e z 罪 θ 2 q r = コス θ 2 {\displaystyle {\begin{aligned}q_{i}&=e_{x}\sin {\frac {\theta }{2}}\\q_{j}&=e_{y}\sin {\frac {\theta }{2}}\\q_{k}&=e_{z}\sin {\frac {\theta }{2}}\\q_{r}&=\cos {\frac {\theta }{2}}\end{aligned}}}
検査により、四元数のパラメータ化は次の制約に従うことがわかります。 q 私 2 + q j 2 + q け 2 + q r 2 = 1 {\displaystyle q_{i}^{2}+q_{j}^{2}+q_{k}^{2}+q_{r}^{2}=1}
最後の項(定義では)はしばしばスカラー項と呼ばれ、複素数の数学的拡張として理解される四元数に由来し、次のように表される。 ここで { i , j , k } は次式を満たす 超複素数 である。 1つの + b 私 + c j + d け と 1つの 、 b 、 c 、 d ∈ R {\displaystyle a+bi+cj+dk\qquad {\text{a,b,c,d\in \mathbb {R} } 私 2 = j 2 = け 2 = − 1 私 j = − j 私 = け j け = − け j = 私 け 私 = − 私 け = j {\displaystyle {\begin{array}{cccccccc}i^{2}&=&j^{2}&=&k^{2}&=&-1\\ij&=&-ji&=&k&&\\jk&=&-kj&=&i&&\\ki&=&-ik&=&j&&\end{array}}}
合成 回転を指定するために使用される四元数の乗算は、 複素数 の乗算と同じ方法で実行されますが 、乗算は可換ではないため、要素の順序を考慮する必要があります。行列表記では、四元数の乗算は次のように記述できます。 q 〜 ⊗ q = [ q r q け − q j q 私 − q け q r q 私 q j q j − q 私 q r q け − q 私 − q j − q け q r ] [ q 〜 私 q 〜 j q 〜 け q 〜 r ] = [ q 〜 r − q 〜 け q 〜 j q 〜 私 q 〜 け q 〜 r − q 〜 私 q 〜 j − q 〜 j q 〜 私 q 〜 r q 〜 け − q 〜 私 − q 〜 j − q 〜 け q 〜 r ] [ q 私 q j q け q r ] {\displaystyle {\tilde {\mathbf {q} }}\otimes \mathbf {q} ={\begin{bmatrix}\;\;\,q_{r}&\;\;\,q_{k}&-q_{j}&\;\;\,q_{i}\\-q_{k}&\;\;\,q_{r}&\;\;\,q_{i}&\;\;\,q_{j}\\\;\;\,q_{j}&-q_{i}&\;\;\,q_{r}&\;\;\,q_{k}\\-q_{i}&-q_{j}&-q_{k}&\;\;\,q_{r}\end{bmatrix}}{\begin{bmatrix}{\tilde {q}}_{i}\\{\tilde {q}}_{j}\\{\tilde {q}}_{k}\\{\tilde {q}}_{r}\end{bmatrix}}={\begin{bmatrix}\;\;\,{\tilde {q}}_{r}&-{\tilde {q}}_{k}&\;\;\,{\tilde {q}}_{j}&\;\;\,{\tilde {q}}_{i}\\\;\;\,{\tilde {q}}_{k}&\;\;\,{\tilde {q}}_{r}&-{\tilde {q}}_{i}&\;\;\,{\tilde {q}}_{j}\\-{\tilde {q}}_{j}&\;\;\,{\tilde {q}}_{i}&\;\;\,{\tilde {q}}_{r}&\;\;\,{\tilde {q}}_{k}\\-{\tilde {q}}_{i}&-{\tilde {q}}_{j}&-{\tilde {q}}_{k}&\;\;\,{\tilde {q}}_{r}\end{bmatrix}}{\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\\q_{r}\end{bmatrix}}}
したがって、連続する2つのクォータニオン回転を組み合わせるのは、回転行列を使うのと同じくらい簡単です。2つの連続する回転行列、 A 1 と A 2 を組み合わせるのと同様に、 クォータニオンパラメータを使って同様に簡潔に表現できます。 A 3 = A 2 A 1 , {\displaystyle \mathbf {A} _{3}=\mathbf {A} _{2}\mathbf {A} _{1},} q 3 = q 2 ⊗ q 1 {\displaystyle \mathbf {q} _{3}=\mathbf {q} _{2}\otimes \mathbf {q} _{1}}
クォータニオンは、次の特性により、非常に人気のあるパラメータ化です。
回転行列と同様に、四元数も丸め誤差のために、有効な回転に対応するように再正規化する必要がある場合があります。しかし、四元数の再正規化にかかる計算コストは、 3×3 行列の正規化にかかる計算コストよりもはるかに低くなります。
四元数は、三次元における回転のスピノリアルな特徴も捉えます。たるんだストリングまたはバンドによって(固定された)周囲に接続された三次元オブジェクトの場合、ストリングまたはバンドは、初期のもつれのない状態から、ある固定軸の周りを 2 回転すると、もつれが解けます。代数的には、このような回転を記述する四元数は、スカラー +1(初期)から、(スカラー + 擬似ベクトル)値を経てスカラー -1(1 回転後)に変化し、(スカラー + 擬似ベクトル)値を経てスカラー +1(2 回転後)に戻ります。このサイクルは 2 回転ごとに繰り返されます。2 n 回転(整数 n > 0)すると 、 中間 の もつれ を 解く試行なしに、ストリング/バンドは、 2 回転から 0 回転までもつれを解くときに使用したのと同じ手順をそれぞれ適用することで、 2( n − 1) 回転の状態に部分的にもつれを解くことができます。同じ手順を n 回適用すると、 2 n 回転した物体は、もつれが解けた状態、つまり回転数0の状態に戻ります。この解けた状態は、弦やバンド自体の回転によって生じたねじれも除去します。これらの事実は、シンプルな3D機械モデルを用いて実証できます。
ロドリゲスベクター ロドリゲス ベクトル ( ギブスベクトル とも呼ばれ、座標は ロドリゲスパラメータ と呼ばれる) [3] [4]は、 回転軸と角度で次のように表すことができます。 g = e ^ tan θ 2 {\displaystyle \mathbf {g} ={\hat {\mathbf {e} }}\tan {\frac {\theta }{2}}}
この表現は、3 次元球面から 3 次元純ベクトル超平面に単位四元数をマッピングする、 グノモニック投影 の高次元版です。
180° ( π ラジアン)で不連続性があります 。つまり、任意の回転ベクトル r が π ラジアンの角度に近づくと 、その接線は無限大に近づきます。
ロドリゲス表現における 回転 g の後に回転 fが続く場合、単純な回転合成形式は次のようになる。
( g , f ) = g + f − f × g 1 − g ⋅ f . {\displaystyle (\mathbf {g} ,\mathbf {f} )={\frac {\mathbf {g} +\mathbf {f} -\mathbf {f} \times \mathbf {g} }{1-\mathbf {g} \cdot \mathbf {f} }}\,.}
現在、この式を証明する最も簡単な方法は、(忠実な) 二重表現 、つまり g = n̂ tan a など
を使用することです。
先ほど述べたパウリ行列導出の組合せ論的特徴は、以下の等価な 四元数 導出とも同一である。空間回転 R に関連付けられた四元数を次のように構成する。
すると、回転 R B と R A の合成は 回転 R C = R B R A となり、回転軸と角度は四元数の積で定義される。 つまり、 S = cos ϕ 2 + sin ϕ 2 S . {\displaystyle S=\cos {\frac {\phi }{2}}+\sin {\frac {\phi }{2}}\mathbf {S} .} A = cos α 2 + sin α 2 A and B = cos β 2 + sin β 2 B , {\displaystyle A=\cos {\frac {\alpha }{2}}+\sin {\frac {\alpha }{2}}\mathbf {A} \quad {\text{and}}\quad B=\cos {\frac {\beta }{2}}+\sin {\frac {\beta }{2}}\mathbf {B} ,} C = cos γ 2 + sin γ 2 C = ( cos β 2 + sin β 2 B ) ( cos α 2 + sin α 2 A ) . {\displaystyle C=\cos {\frac {\gamma }{2}}+\sin {\frac {\gamma }{2}}\mathbf {C} =\left(\cos {\frac {\beta }{2}}+\sin {\frac {\beta }{2}}\mathbf {B} \right)\left(\cos {\frac {\alpha }{2}}+\sin {\frac {\alpha }{2}}\mathbf {A} \right).}
この四元数積を展開すると cos γ 2 + sin γ 2 C = ( cos β 2 cos α 2 − sin β 2 sin α 2 B ⋅ A ) + ( sin β 2 cos α 2 B + sin α 2 cos β 2 A + sin β 2 sin α 2 B × A ) . {\displaystyle \cos {\frac {\gamma }{2}}+\sin {\frac {\gamma }{2}}\mathbf {C} =\left(\cos {\frac {\beta }{2}}\cos {\frac {\alpha }{2}}-\sin {\frac {\beta }{2}}\sin {\frac {\alpha }{2}}\mathbf {B} \cdot \mathbf {A} \right)+\left(\sin {\frac {\beta }{2}}\cos {\frac {\alpha }{2}}\mathbf {B} +\sin {\frac {\alpha }{2}}\cos {\frac {\beta }{2}}\mathbf {A} +\sin {\frac {\beta }{2}}\sin {\frac {\alpha }{2}}\mathbf {B} \times \mathbf {A} \right).}
この方程式の両辺を前の方程式から得られた恒等式で割り、 評価する。 cos γ 2 = cos β 2 cos α 2 − sin β 2 sin α 2 B ⋅ A , {\displaystyle \cos {\frac {\gamma }{2}}=\cos {\frac {\beta }{2}}\cos {\frac {\alpha }{2}}-\sin {\frac {\beta }{2}}\sin {\frac {\alpha }{2}}\mathbf {B} \cdot \mathbf {A} ,}
tan γ 2 C = tan β 2 B + tan α 2 A + tan β 2 tan α 2 B × A 1 − tan β 2 tan α 2 B ⋅ A . {\displaystyle \tan {\frac {\gamma }{2}}\mathbf {C} ={\frac {\tan {\frac {\beta }{2}}\mathbf {B} +\tan {\frac {\alpha }{2}}\mathbf {A} +\tan {\frac {\beta }{2}}\tan {\frac {\alpha }{2}}\mathbf {B} \times \mathbf {A} }{1-\tan {\frac {\beta }{2}}\tan {\frac {\alpha }{2}}\mathbf {B} \cdot \mathbf {A} }}.}
これは、2つの成分回転の軸を用いて定義される合成回転の軸に関するロドリゲスの公式です。彼は1840年にこの公式を導き出しました(408ページ参照)。 [3] 3つの回転軸 A 、 B 、 C は球面三角形を形成し、この三角形の辺によって形成される平面間の二面角は回転角によって定義されます。
単位四元数の純虚超平面への立体投影は等角回転ベクトルと呼ばれ 、 座標 は 修正 ロドリゲスパラメータ (MRP) と呼ばれることもあります。
共形回転ベクトルはオイラー軸と角度で次のように表すことができます。MRP は、同じ回転を表す単位四元数の成分で次のように表すことができます。 p = e ^ tan θ 4 . {\displaystyle \mathbf {p} ={\hat {\mathbf {e} }}\tan {\frac {\theta }{4}}\,.} p x , y , z = q i , j , k 1 + q r . {\displaystyle p_{x,y,z}={\frac {q_{i,j,k}}{1+q_{r}}}\,.}
反対の四元数− q の立体射影は、元の四元数 q の射影とは 異なる共形回転ベクトル p s を生成します。成分を比較すると、次の式が得られます。 特に、これらのベクトルの1つが単位3次元球面の内側にある場合、もう1つは外側にあります。 p x , y , z s = − q i , j , k 1 − q r = − p x , y , z p 2 . {\displaystyle p_{x,y,z}^{s}={\frac {-q_{i,j,k}}{1-q_{r}}}={\frac {-p_{x,y,z}}{\mathbf {p} ^{2}}}\,.}
上記と同じ表記法を使用すると、単位四元数は次のように得られます。
s = 2 1 + ‖ p ‖ 2 , { q r = s − 1 , q i = s p x , q j = s p y , q k = s p z . {\displaystyle s={\frac {2}{1+\lVert \mathbf {p} \rVert ^{2}}},\qquad {\begin{cases}q_{r}&=s-1,\\q_{i}&=s\,p_{x},\\q_{j}&=s\,p_{y},\\q_{k}&=s\,p_{z}.\end{cases}}}
ケーリー・クラインパラメータ Wolfram Mathworld の定義を参照してください。
高次元類似体
ユークリッド空間における3D ベクトル p の軸 n の周りの角度 η にわたるアクティブ回転は、次のようにドット積とクロス積で簡単に表すことができます。
p ′ = p ∥ n + cos η p ⊥ + sin η p ∧ n {\displaystyle \mathbf {p} '=p_{\parallel }\mathbf {n} +\cos {\eta }\,\mathbf {p} _{\perp }+\sin {\eta }\,\mathbf {p} \wedge \mathbf {n} } ここで
、 は n に沿った p の縦方向成分で 、 ドット積 で与えられ、
は n に関する p
の横方向成分であり 、 p ∥ = p ⋅ n {\displaystyle p_{\parallel }=\mathbf {p} \cdot \mathbf {n} } p ⊥ = p − ( p ⋅ n ) n {\displaystyle \mathbf {p} _{\perp }=\mathbf {p} -(\mathbf {p} \cdot \mathbf {n} )\mathbf {n} } p ∧ n {\displaystyle \mathbf {p} \wedge \mathbf {n} }
はp と n の 外積 です 。
上記の式は、 p の縦方向成分は 変化しない一方、 pの横方向成分は n に垂直な平面内で回転することを示しています。この平面は、 pの横方向成分自身と、 p と n の両方に垂直な方向 によって張られます。この回転は、式の中で角度 η にわたる2次元回転として直接識別できます 。
パッシブ回転は同じ式で記述できますが、 η または n の符号が逆になります。
回転行列↔オイラー角 オイラー角 ( φ 、 θ 、 ψ ) は、回転行列を解析形式で調べることによって、
回転行列 A から抽出できます。
回転行列 → オイラー角( z - x - z 外因性 x 規則を使用すると 、3-1-3 外在 オイラー角 φ 、 θ 、および ψ ( z 軸、 x 軸、および 軸の周り) は次のように取得できます。 Z {\displaystyle Z} ϕ = atan2 ( A 31 , A 32 ) θ = arccos ( A 33 ) ψ = − atan2 ( A 13 , A 23 ) {\displaystyle {\begin{aligned}\phi &=\operatorname {atan2} \left(A_{31},A_{32}\right)\\\theta &=\arccos \left(A_{33}\right)\\\psi &=-\operatorname {atan2} \left(A_{13},A_{23}\right)\end{aligned}}}
atan2( a , b )は arctan と同等である ことに注意してください 1つの / b ここで、点 ( b 、 a ) が含まれる 象限 も考慮されます 。atan2を 参照してください。
変換を実行する際には、いくつかの状況を考慮する必要があります。 [5]
区間 [−π , π ] 3 に は一般に2つの解が存在します。上記の式は、 θが 区間 [0, π ] 内にある場合にのみ有効です。 特別なケース A 33 = 0 の場合、 φ と ψは A 11 と A 12 から導出されます 。 区間 [−π 、 π ] 3 の 外側には無限個、可算個の解が存在する。 すべての数学的ソリューションが特定のアプリケーションに適用されるかどうかは、状況によって異なります。
オイラー角( z - y ′ - x ″ 固有)→回転行列 回転行列 A は、軸の周りの回転によって生成された 3 つの行列を乗算することによって、 3-2-1 の 固有オイラー角から生成されます。 A = A 3 A 2 A 1 = A Z A Y A X {\displaystyle \mathbf {A} =\mathbf {A} _{3}\mathbf {A} _{2}\mathbf {A} _{1}=\mathbf {A} _{Z}\mathbf {A} _{Y}\mathbf {A} _{X}}
回転軸は、使用される特定の変換規則によって異なります。x 変換規則の場合、回転はx軸、y軸、z軸を中心とし 、 角度 は ϕ 、 θ 、ψで表さ れ ます 。 各 行列 は以下のとおりです。 A X = [ 1 0 0 0 cos ϕ − sin ϕ 0 sin ϕ cos ϕ ] A Y = [ cos θ 0 sin θ 0 1 0 − sin θ 0 cos θ ] A Z = [ cos ψ − sin ψ 0 sin ψ cos ψ 0 0 0 1 ] {\displaystyle {\begin{aligned}\mathbf {A} _{X}&={\begin{bmatrix}1&0&0\\0&\cos \phi &-\sin \phi \\0&\sin \phi &\cos \phi \end{bmatrix}}\\[5px]\mathbf {A} _{Y}&={\begin{bmatrix}\cos \theta &0&\sin \theta \\0&1&0\\-\sin \theta &0&\cos \theta \end{bmatrix}}\\[5px]\mathbf {A} _{Z}&={\begin{bmatrix}\cos \psi &-\sin \psi &0\\\sin \psi &\cos \psi &0\\0&0&1\end{bmatrix}}\end{aligned}}}
これにより、次の式が得られます
。注: これは 、ほぼすべての工学および物理学の分野で使用されている規則である 右手 系
に有効です。 A = [ cos θ cos ψ − cos ϕ sin ψ + sin ϕ sin θ cos ψ sin ϕ sin ψ + cos ϕ sin θ cos ψ cos θ sin ψ cos ϕ cos ψ + sin ϕ sin θ sin ψ − sin ϕ cos ψ + cos ϕ sin θ sin ψ − sin θ sin ϕ cos θ cos ϕ cos θ ] {\displaystyle \mathbf {A} ={\begin{bmatrix}\cos \theta \cos \psi &-\cos \phi \sin \psi +\sin \phi \sin \theta \cos \psi &\sin \phi \sin \psi +\cos \phi \sin \theta \cos \psi \\\cos \theta \sin \psi &\cos \phi \cos \psi +\sin \phi \sin \theta \sin \psi &-\sin \phi \cos \psi +\cos \phi \sin \theta \sin \psi \\-\sin \theta &\sin \phi \cos \theta &\cos \phi \cos \theta \\\end{bmatrix}}}
これらの右手回転行列の解釈は、点変換( 能動的 )ではなく座標変換( 受動 的)を表すというものです。A はローカルフレーム 1 からグローバルフレーム 0 への回転を表すため (つまり、 Aはフレーム 0 に対するフレーム 1 の軸をエンコードする ため)、基本回転行列は上記のように構成されます。逆回転は回転を転置しただけなので、フレーム 0 からフレーム 1 へのグローバルからローカルへの回転を求める場合は、次のように記述します
。 A T = ( A Z A Y A X ) T = A X T A Y T A Z T . {\displaystyle \mathbf {A} ^{\mathsf {T}}=(\mathbf {A} _{Z}\mathbf {A} _{Y}\mathbf {A} _{X})^{\mathsf {T}}=\mathbf {A} _{X}^{\mathsf {T}}\mathbf {A} _{Y}^{\mathsf {T}}\mathbf {A} _{Z}^{\mathsf {T}}\,.}
回転行列↔オイラー軸/角度 オイラー角 θ が π の倍数でない場合 、オイラー軸 ê と角度 θは回転行列 A の要素から 次のように計算できます。 θ = arccos A 11 + A 22 + A 33 − 1 2 e 1 = A 32 − A 23 2 sin θ e 2 = A 13 − A 31 2 sin θ e 3 = A 21 − A 12 2 sin θ {\displaystyle {\begin{aligned}\theta &=\arccos {\frac {A_{11}+A_{22}+A_{33}-1}{2}}\\e_{1}&={\frac {A_{32}-A_{23}}{2\sin \theta }}\\e_{2}&={\frac {A_{13}-A_{31}}{2\sin \theta }}\\e_{3}&={\frac {A_{21}-A_{12}}{2\sin \theta }}\end{aligned}}}
あるいは、次の方法を使用することもできます。
回転行列の固有分解により、固有値 1 と cos θ ± i sin θ が得られます。オイラー軸は 1 の固有値に対応する固有ベクトルであり、残りの固有値から θ を 計算できます。
オイラー軸は行列I − A の零空間に張る正規化されたベクトルなので、特異値分解を使って見つけることもできます 。
逆に変換するには、オイラー軸 ê と角度 θに対応する回転行列を 、ロドリゲスの回転式 (適切な修正を加えて)に従って 次のように計算します。 A = I 3 cos θ + ( 1 − cos θ ) e ^ e ^ T + [ e ^ ] × sin θ {\displaystyle \mathbf {A} =\mathbf {I} _{3}\cos \theta +(1-\cos \theta ){\hat {\mathbf {e} }}{\hat {\mathbf {e} }}^{\mathsf {T}}+\left[{\hat {\mathbf {e} }}\right]_{\times }\sin \theta }
I 3 は 3 × 3 の 単位行列 であり 、 [ e ^ ] × = [ 0 − e 3 e 2 e 3 0 − e 1 − e 2 e 1 0 ] {\displaystyle \left[{\hat {\mathbf {e} }}\right]_{\times }={\begin{bmatrix}0&-e_{3}&e_{2}\\e_{3}&0&-e_{1}\\-e_{2}&e_{1}&0\end{bmatrix}}}
はクロス積行列 です 。
これは次のように展開されます: A 11 = ( 1 − cos θ ) e 1 2 + cos θ A 12 = ( 1 − cos θ ) e 1 e 2 − e 3 sin θ A 13 = ( 1 − cos θ ) e 1 e 3 + e 2 sin θ A 21 = ( 1 − cos θ ) e 2 e 1 + e 3 sin θ A 22 = ( 1 − cos θ ) e 2 2 + cos θ A 23 = ( 1 − cos θ ) e 2 e 3 − e 1 sin θ A 31 = ( 1 − cos θ ) e 3 e 1 − e 2 sin θ A 32 = ( 1 − cos θ ) e 3 e 2 + e 1 sin θ A 33 = ( 1 − cos θ ) e 3 2 + cos θ {\displaystyle {\begin{aligned}A_{11}&=(1-\cos \theta )e_{1}^{2}+\cos \theta \\A_{12}&=(1-\cos \theta )e_{1}e_{2}-e_{3}\sin \theta \\A_{13}&=(1-\cos \theta )e_{1}e_{3}+e_{2}\sin \theta \\A_{21}&=(1-\cos \theta )e_{2}e_{1}+e_{3}\sin \theta \\A_{22}&=(1-\cos \theta )e_{2}^{2}+\cos \theta \\A_{23}&=(1-\cos \theta )e_{2}e_{3}-e_{1}\sin \theta \\A_{31}&=(1-\cos \theta )e_{3}e_{1}-e_{2}\sin \theta \\A_{32}&=(1-\cos \theta )e_{3}e_{2}+e_{1}\sin \theta \\A_{33}&=(1-\cos \theta )e_{3}^{2}+\cos \theta \end{aligned}}}
回転行列↔四元数 回転行列から四元数を計算する場合、 q と −q は 同じ回転を表すため、符号の曖昧さが生じます。
回転行列 A から四元数を計算する 1 つの方法は 次のとおりです。 q = [ q i q j q k q r ] = q i i + q j j + q k k + q r {\displaystyle \mathbf {q} ={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\\q_{r}\end{bmatrix}}=q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} +q_{r}} q r = 1 2 1 + A 11 + A 22 + A 33 q i = 1 4 q r ( A 32 − A 23 ) q j = 1 4 q r ( A 13 − A 31 ) q k = 1 4 q r ( A 21 − A 12 ) {\displaystyle {\begin{aligned}q_{r}&={\frac {1}{2}}{\sqrt {1+A_{11}+A_{22}+A_{33}}}\\q_{i}&={\frac {1}{4q_{r}}}\left(A_{32}-A_{23}\right)\\q_{j}&={\frac {1}{4q_{r}}}\left(A_{13}-A_{31}\right)\\q_{k}&={\frac {1}{4q_{r}}}\left(A_{21}-A_{12}\right)\end{aligned}}}
q を計算する方法は、数学的に同等な他に3つあります 。分母がゼロに近づく状況を避けることで、数値の不正確さを軽減できます。他の3つの方法の1つは次のとおりです。 [6] [7] q i = 1 2 1 + A 11 − A 22 − A 33 q j = 1 4 q i ( A 12 + A 21 ) q k = 1 4 q i ( A 13 + A 31 ) q r = 1 4 q i ( A 32 − A 23 ) {\displaystyle {\begin{aligned}q_{i}&={\frac {1}{2}}{\sqrt {1+A_{11}-A_{22}-A_{33}}}\\q_{j}&={\frac {1}{4q_{i}}}\left(A_{12}+A_{21}\right)\\q_{k}&={\frac {1}{4q_{i}}}\left(A_{13}+A_{31}\right)\\q_{r}&={\frac {1}{4q_{i}}}\left(A_{32}-A_{23}\right)\end{aligned}}}
四元数q に対応する回転行列は 次のように計算できる。 ここで 、 A = ( q r 2 − q ˇ T q ˇ ) I 3 + 2 q ˇ q ˇ T + 2 q r Q {\displaystyle \mathbf {A} =\left(q_{r}^{2}-{\check {\mathbf {q} }}^{\mathsf {T}}{\check {\mathbf {q} }}\right)\mathbf {I} _{3}+2{\check {\mathbf {q} }}{\check {\mathbf {q} }}^{\mathsf {T}}+2q_{r}\mathbf {\mathcal {Q}} } q ˇ = [ q i q j q k ] , Q = [ 0 − q k q j q k 0 − q i − q j q i 0 ] {\displaystyle {\check {\mathbf {q} }}={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\end{bmatrix}}\,,\quad \mathbf {\mathcal {Q}} ={\begin{bmatrix}0&-q_{k}&q_{j}\\q_{k}&0&-q_{i}\\-q_{j}&q_{i}&0\end{bmatrix}}} A = [ 1 − 2 q j 2 − 2 q k 2 2 ( q i q j − q k q r ) 2 ( q i q k + q j q r ) 2 ( q i q j + q k q r ) 1 − 2 q i 2 − 2 q k 2 2 ( q j q k − q i q r ) 2 ( q i q k − q j q r ) 2 ( q j q k + q i q r ) 1 − 2 q i 2 − 2 q j 2 ] {\displaystyle \mathbf {A} ={\begin{bmatrix}1-2q_{j}^{2}-2q_{k}^{2}&2\left(q_{i}q_{j}-q_{k}q_{r}\right)&2\left(q_{i}q_{k}+q_{j}q_{r}\right)\\2\left(q_{i}q_{j}+q_{k}q_{r}\right)&1-2q_{i}^{2}-2q_{k}^{2}&2\left(q_{j}q_{k}-q_{i}q_{r}\right)\\2\left(q_{i}q_{k}-q_{j}q_{r}\right)&2\left(q_{j}q_{k}+q_{i}q_{r}\right)&1-2q_{i}^{2}-2q_{j}^{2}\end{bmatrix}}}
または同等 A = [ − 1 + 2 q i 2 + 2 q r 2 2 ( q i q j − q k q r ) 2 ( q i q k + q j q r ) 2 ( q i q j + q k q r ) − 1 + 2 q j 2 + 2 q r 2 2 ( q j q k − q i q r ) 2 ( q i q k − q j q r ) 2 ( q j q k + q i q r ) − 1 + 2 q k 2 + 2 q r 2 ] {\displaystyle \mathbf {A} ={\begin{bmatrix}-1+2q_{i}^{2}+2q_{r}^{2}&2\left(q_{i}q_{j}-q_{k}q_{r}\right)&2\left(q_{i}q_{k}+q_{j}q_{r}\right)\\2\left(q_{i}q_{j}+q_{k}q_{r}\right)&-1+2q_{j}^{2}+2q_{r}^{2}&2\left(q_{j}q_{k}-q_{i}q_{r}\right)\\2\left(q_{i}q_{k}-q_{j}q_{r}\right)&2\left(q_{j}q_{k}+q_{i}q_{r}\right)&-1+2q_{k}^{2}+2q_{r}^{2}\end{bmatrix}}}
これは変換行列の オイラー・ロドリゲスの公式 と呼ばれる。 A {\displaystyle \mathbf {A} }
オイラー角↔四元数
オイラー角( z - x - z 外在的)→四元数 以下のアルゴリズムでは、 x 規則 3-1-3 外在オイラー角を 考慮します 。アルゴリズムの項は、使用する規則によって異なります。
次のようにオイラー角 ( ϕ 、 θ 、 ψ ) から四元数を計算できます 。 q = [ q i q j q k q r ] = q i i + q j j + q k k + q r {\displaystyle \mathbf {q} ={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\\q_{r}\end{bmatrix}}=q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} +q_{r}}
q i = cos ϕ − ψ 2 sin θ 2 q j = sin ϕ − ψ 2 sin θ 2 q k = sin ϕ + ψ 2 cos θ 2 q r = cos ϕ + ψ 2 cos θ 2 {\displaystyle {\begin{aligned}q_{i}&=\cos {\frac {\phi -\psi }{2}}\sin {\frac {\theta }{2}}\\q_{j}&=\sin {\frac {\phi -\psi }{2}}\sin {\frac {\theta }{2}}\\q_{k}&=\sin {\frac {\phi +\psi }{2}}\cos {\frac {\theta }{2}}\\q_{r}&=\cos {\frac {\phi +\psi }{2}}\cos {\frac {\theta }{2}}\end{aligned}}}
オイラー角( z - y ′ - x ″ 固有)→四元数 ヨー角 ( ψ )、 ピッチ角 ( θ )、ロール角( ϕ )に相当する四元数 。または z - y ′- x ″ 規則に従う 固有の Tait-Bryan角は 、次のように計算できる。
q i = sin ϕ 2 cos θ 2 cos ψ 2 − cos ϕ 2 sin θ 2 sin ψ 2 q j = cos ϕ 2 sin θ 2 cos ψ 2 + sin ϕ 2 cos θ 2 sin ψ 2 q k = cos ϕ 2 cos θ 2 sin ψ 2 − sin ϕ 2 sin θ 2 cos ψ 2 q r = cos ϕ 2 cos θ 2 cos ψ 2 + sin ϕ 2 sin θ 2 sin ψ 2 {\displaystyle {\begin{aligned}q_{i}&=\sin {\frac {\phi }{2}}\cos {\frac {\theta }{2}}\cos {\frac {\psi }{2}}-\cos {\frac {\phi }{2}}\sin {\frac {\theta }{2}}\sin {\frac {\psi }{2}}\\q_{j}&=\cos {\frac {\phi }{2}}\sin {\frac {\theta }{2}}\cos {\frac {\psi }{2}}+\sin {\frac {\phi }{2}}\cos {\frac {\theta }{2}}\sin {\frac {\psi }{2}}\\q_{k}&=\cos {\frac {\phi }{2}}\cos {\frac {\theta }{2}}\sin {\frac {\psi }{2}}-\sin {\frac {\phi }{2}}\sin {\frac {\theta }{2}}\cos {\frac {\psi }{2}}\\q_{r}&=\cos {\frac {\phi }{2}}\cos {\frac {\theta }{2}}\cos {\frac {\psi }{2}}+\sin {\frac {\phi }{2}}\sin {\frac {\theta }{2}}\sin {\frac {\psi }{2}}\end{aligned}}}
クォータニオン → オイラー角( z - x - z 外因性 回転四元数 x 規則 3-1-3 外在オイラー角 ( φ , θ , ψ ) は次のように計算できる 。 q = [ q i q j q k q r ] = q i i + q j j + q k k + q r , {\displaystyle \mathbf {q} ={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\\q_{r}\end{bmatrix}}=q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} +q_{r}\,,}
ϕ = atan2 ( ( q i q k + q j q r ) , − ( q j q k − q i q r ) ) θ = arccos ( − q i 2 − q j 2 + q k 2 + q r 2 ) ψ = atan2 ( ( q i q k − q j q r ) , ( q j q k + q i q r ) ) {\displaystyle {\begin{aligned}\phi &=\operatorname {atan2} \left(\left(q_{i}q_{k}+q_{j}q_{r}\right),-\left(q_{j}q_{k}-q_{i}q_{r}\right)\right)\\\theta &=\arccos \left(-q_{i}^{2}-q_{j}^{2}+q_{k}^{2}+q_{r}^{2}\right)\\\psi &=\operatorname {atan2} \left(\left(q_{i}q_{k}-q_{j}q_{r}\right),\left(q_{j}q_{k}+q_{i}q_{r}\right)\right)\end{aligned}}}
クォータニオン → オイラー角( z - y ′ - x ″ 本質的な 回転四元数 ヨー 、 ピッチ 、ロール角、または z - y ′- x ″ 規則に従う 固有の Tait-Bryan角が 与えられれば、次のように計算できる。 q = [ q i q j q k q r ] = q i i + q j j + q k k + q r , {\displaystyle \mathbf {q} ={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\\q_{r}\end{bmatrix}}=q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} +q_{r}\,,}
roll = atan2 ( 2 ( q r q i + q j q k ) , 1 − 2 ( q i 2 + q j 2 ) ) pitch = arcsin ( 2 ( q r q j − q k q i ) ) yaw = atan2 ( 2 ( q r q k + q i q j ) , 1 − 2 ( q j 2 + q k 2 ) ) {\displaystyle {\begin{aligned}{\text{roll}}&=\operatorname {atan2} \left(2\left(q_{r}q_{i}+q_{j}q_{k}\right),1-2\left(q_{i}^{2}+q_{j}^{2}\right)\right)\\{\text{pitch}}&=\arcsin \left(2\left(q_{r}q_{j}-q_{k}q_{i}\right)\right)\\{\text{yaw}}&=\operatorname {atan2} \left(2\left(q_{r}q_{k}+q_{i}q_{j}\right),1-2\left(q_{j}^{2}+q_{k}^{2}\right)\right)\end{aligned}}}
オイラー軸–角度 ↔ 四元数 オイラー軸 ê と角度 θ が与えられると、四元数は q = [ q i q j q k q r ] = q i i + q j j + q k k + q r , {\displaystyle \mathbf {q} ={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\\q_{r}\end{bmatrix}}=q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} +q_{r}\,,}
次のように計算できる。 q i = e ^ 1 sin θ 2 q j = e ^ 2 sin θ 2 q k = e ^ 3 sin θ 2 q r = cos θ 2 {\displaystyle {\begin{aligned}q_{i}&={\hat {e}}_{1}\sin {\frac {\theta }{2}}\\q_{j}&={\hat {e}}_{2}\sin {\frac {\theta }{2}}\\q_{k}&={\hat {e}}_{3}\sin {\frac {\theta }{2}}\\q_{r}&=\cos {\frac {\theta }{2}}\end{aligned}}}
回転四元数 q が与えられれば、 オイラー軸 ê と角度 θ は次のように計算できる。 q ˇ = [ q i q j q k ] . {\displaystyle {\check {\mathbf {q} }}={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\end{bmatrix}}\,.} e ^ = q ˇ ‖ q ˇ ‖ θ = 2 arccos q r {\displaystyle {\begin{aligned}{\hat {\mathbf {e} }}&={\frac {\check {\mathbf {q} }}{\left\|{\check {\mathbf {q} }}\right\|}}\\\theta &=2\arccos q_{r}\end{aligned}}}
回転行列↔ロドリゲスベクトル
ロドリゲスベクトル → 回転行列 ロドリゲスベクトルの定義は回転四元数と関連しているので、 次の性質を利用すると、 qを 因数分解することで式が得られる。 { g i = q i q r = e x tan ( θ 2 ) g j = q j q r = e y tan ( θ 2 ) g k = q k q r = e z tan ( θ 2 ) {\displaystyle {\begin{cases}g_{i}={\dfrac {q_{i}}{q_{r}}}=e_{x}\tan \left({\dfrac {\theta }{2}}\right)\\g_{j}={\dfrac {q_{j}}{q_{r}}}=e_{y}\tan \left({\dfrac {\theta }{2}}\right)\\g_{k}={\dfrac {q_{k}}{q_{r}}}=e_{z}\tan \left({\dfrac {\theta }{2}}\right)\end{cases}}} 1 = q r 2 + q i 2 + q j 2 + q k 2 = q r 2 ( 1 + q i 2 q r 2 + q j 2 q r 2 + q k 2 q r 2 ) = q r 2 ( 1 + g i 2 + g j 2 + g k 2 ) {\displaystyle 1=q_{r}^{2}+q_{i}^{2}+q_{j}^{2}+q_{k}^{2}=q_{r}^{2}\left(1+{\frac {q_{i}^{2}}{q_{r}^{2}}}+{\frac {q_{j}^{2}}{q_{r}^{2}}}+{\frac {q_{k}^{2}}{q_{r}^{2}}}\right)=q_{r}^{2}\left(1+g_{i}^{2}+g_{j}^{2}+g_{k}^{2}\right)} 2 r 四元数に対して得られた最終的な式から:
A = q r 2 [ 1 q r 2 − 2 q j 2 q r 2 − 2 q k 2 q r 2 2 ( q i q r q j q r − q k q r ) 2 ( q i q r q k q r + q j q r ) 2 ( q i q r q j q r + q k q r ) 1 q r 2 − 2 q i 2 q r 2 − 2 q k 2 q r 2 2 ( q j q r q k q r − q i q r ) 2 ( q i q r q k q r − q j q r ) 2 ( q j q r q k q r + q i q r ) 1 q r 2 − 2 q i 2 q r 2 − 2 q j 2 q r 2 ] {\displaystyle \mathbf {A} =q_{r}^{2}{\begin{bmatrix}{\frac {1}{q_{r}^{2}}}-2{\frac {q_{j}^{2}}{q_{r}^{2}}}-2{\frac {q_{k}^{2}}{q_{r}^{2}}}&2\left({\frac {q_{i}}{q_{r}}}{\frac {q_{j}}{q_{r}}}-{\frac {q_{k}}{q_{r}}}\right)&2\left({\frac {q_{i}}{q_{r}}}{\frac {q_{k}}{q_{r}}}+{\frac {q_{j}}{q_{r}}}\right)\\2\left({\frac {q_{i}}{q_{r}}}{\frac {q_{j}}{q_{r}}}+{\frac {q_{k}}{q_{r}}}\right)&{\frac {1}{q_{r}^{2}}}-2{\frac {q_{i}^{2}}{q_{r}^{2}}}-2{\frac {q_{k}^{2}}{q_{r}^{2}}}&2\left({\frac {q_{j}}{q_{r}}}{\frac {q_{k}}{q_{r}}}-{\frac {q_{i}}{q_{r}}}\right)\\2\left({\frac {q_{i}}{q_{r}}}{\frac {q_{k}}{q_{r}}}-{\frac {q_{j}}{q_{r}}}\right)&2\left({\frac {q_{j}}{q_{r}}}{\frac {q_{k}}{q_{r}}}+{\frac {q_{i}}{q_{r}}}\right)&{\frac {1}{q_{r}^{2}}}-2{\frac {q_{i}^{2}}{q_{r}^{2}}}-2{\frac {q_{j}^{2}}{q_{r}^{2}}}\end{bmatrix}}}
最終的な式は次のようになります。
A = 1 1 + g i 2 + g j 2 + g k 2 [ 1 + g i 2 − g j 2 − g k 2 2 ( g i g j − g k ) 2 ( g i g k + g j ) 2 ( g i g j + g k ) 1 − g i 2 + g j 2 − g k 2 2 ( g j g k − g i ) 2 ( g i g k − g j ) 2 ( g j g k + g i ) 1 − g i 2 − g j 2 + g k 2 ] {\displaystyle \mathbf {A} ={\frac {1}{1+g_{i}^{2}+g_{j}^{2}+g_{k}^{2}}}{\begin{bmatrix}1+g_{i}^{2}-g_{j}^{2}-g_{k}^{2}&2\left(g_{i}g_{j}-g_{k}\right)&2\left(g_{i}g_{k}+g_{j}\right)\\2\left(g_{i}g_{j}+g_{k}\right)&1-g_{i}^{2}+g_{j}^{2}-g_{k}^{2}&2\left(g_{j}g_{k}-g_{i}\right)\\2\left(g_{i}g_{k}-g_{j}\right)&2\left(g_{j}g_{k}+g_{i}\right)&1-g_{i}^{2}-g_{j}^{2}+g_{k}^{2}\end{bmatrix}}}
回転行列↔角速度 角速度ベクトルは 回転行列の 時間微分 から抽出できる ω = [ ω x ω y ω z ] {\displaystyle {\boldsymbol {\omega }}={\begin{bmatrix}\omega _{x}\\\omega _{y}\\\omega _{z}\end{bmatrix}}} d A / d t 次の関係により: [ ω ] × = [ 0 − ω z ω y ω z 0 − ω x − ω y ω x 0 ] = d A d t A T {\displaystyle [{\boldsymbol {\omega }}]_{\times }={\begin{bmatrix}0&-\omega _{z}&\omega _{y}\\\omega _{z}&0&-\omega _{x}\\-\omega _{y}&\omega _{x}&0\end{bmatrix}}={\frac {\mathrm {d} \mathbf {A} }{\mathrm {d} t}}\mathbf {A} ^{\mathsf {T}}}
導出はIoffe [8] から次のように改変されている。
任意のベクトル r 0 について、 r ( t ) = A ( t ) r 0 を考えて微分します。 d r d t = d A d t r 0 = d A d t A T ( t ) r ( t ) {\displaystyle {\frac {\mathrm {d} \mathbf {r} }{\mathrm {d} t}}={\frac {\mathrm {d} \mathbf {A} }{\mathrm {d} t}}\mathbf {r} _{0}={\frac {\mathrm {d} \mathbf {A} }{\mathrm {d} t}}\mathbf {A} ^{\mathsf {T}}(t)\mathrm {r} (t)}
ベクトルの微分は、 その先端の 線速度です。A は 回転行列であるため、定義により r ( t )の長さは常に r 0 の長さに等しく 、時間とともに変化しません。したがって、 r ( t ) が回転すると、その先端は円周上を移動し、その先端の線速度は円の接線方向、つまり常に r ( t ) に垂直になります。この特定のケースでは、線速度ベクトルと角速度ベクトルの関係は次のようになります ( 円運動 と 外積を 参照)。 d r d t = ω ( t ) × r ( t ) = [ ω ] × r ( t ) {\displaystyle {\frac {\mathrm {d} \mathbf {r} }{\mathrm {d} t}}={\boldsymbol {\omega }}(t)\times \mathbf {r} (t)=[{\boldsymbol {\omega }}]_{\times }\mathbf {r} (t)}
上記の式の 推移性 により、 d A d t A T ( t ) r ( t ) = [ ω ] × r ( t ) {\displaystyle {\frac {\mathrm {d} \mathbf {A} }{\mathrm {d} t}}\mathbf {A} ^{\mathsf {T}}(t)\mathbf {r} (t)=[{\boldsymbol {\omega }}]_{\times }\mathbf {r} (t)}
これは d A d t A T ( t ) = [ ω ] × {\displaystyle {\frac {\mathrm {d} \mathbf {A} }{\mathrm {d} t}}\mathbf {A} ^{\mathsf {T}}(t)=[{\boldsymbol {\omega }}]_{\times }}
クォータニオン↔角速度 角速度ベクトルは 四元数の微分から得られる ω = [ ω x ω y ω z ] {\displaystyle {\boldsymbol {\omega }}={\begin{bmatrix}\omega _{x}\\\omega _{y}\\\omega _{z}\end{bmatrix}}} d q / d t 以下のように表される: [9] ここで q̃は q の共役(逆)である 。 [ 0 ω x ω y ω z ] = 2 d q d t q ~ {\displaystyle {\begin{bmatrix}0\\\omega _{x}\\\omega _{y}\\\omega _{z}\end{bmatrix}}=2{\frac {\mathrm {d} \mathbf {q} }{\mathrm {d} t}}{\tilde {\mathbf {q} }}}
逆に、四元数の微分は d q d t = 1 2 [ 0 ω x ω y ω z ] q . {\displaystyle {\frac {\mathrm {d} \mathbf {q} }{\mathrm {d} t}}={\frac {1}{2}}{\begin{bmatrix}0\\\omega _{x}\\\omega _{y}\\\omega _{z}\end{bmatrix}}\mathbf {q} \,.}
幾何代数における回転子 幾何代数 (GA)の形式論は、 四元数法の拡張と解釈を提供する。GAの中心となるのはベクトルの幾何積であり、これは伝統的な 内積 と 外積 の拡張であり、次のように与えられる。 a b = a ⋅ b + a ∧ b {\displaystyle \mathbf {ab} =\mathbf {a} \cdot \mathbf {b} +\mathbf {a} \wedge \mathbf {b} }
ここで、記号 ∧は 外積またはウェッジ積 を表します。ベクトル a 、 b の積は 、内積からのスカラー部分とウェッジ積からの双 ベクトル 部分の2つの項を生成します。この双ベクトルは、ベクトルの外積が返す値に垂直な平面を表します。
GAにおけるバイベクトルは、ベクトルと比較していくつか特異な性質を持つ。幾何積において、バイベクトルは負の平方根を持つ。すなわち、バイベクトル x̂ŷ は xy 平面を記述する 。その平方根は ( x̂ŷ ) 2 = x̂ŷx̂ŷ である。単位基底ベクトルは互いに直交するため、幾何積は反対称外積に簡約され、 x̂ と ŷ は -1 のコストで自由に交換できる。 基底ベクトル自体が +1 の平方根を持つため、
平方根は - x̂x̂ŷŷ = -1に簡約される。
この結果は一般にすべての2重ベクトルに当てはまり、結果として2重ベクトルは虚数単位 と同様の役割を果たします 。幾何代数では、4元数に類似した回転子 として2重ベクトルが使用され 、 次のように表されます
。 ここで、 B̂ は 回転面 を記述する単位2重ベクトルです 。B̂ は -1 の2乗になるので、 R のべき級数 展開により 三角関数 が生成されます。ベクトル a を回転ベクトル b に写す回転式は 次 のようになります。 ここ
で、 は の 逆です ( のベクトルの順序を逆にすることは、 の符号を変えることと同じです)。 R = exp ( − B ^ θ 2 ) = cos θ 2 − B ^ sin θ 2 , {\displaystyle \mathbf {R} =\exp \left({\frac {-{\hat {\mathbf {B} }}\theta }{2}}\right)=\cos {\frac {\theta }{2}}-{\hat {\mathbf {B} }}\sin {\frac {\theta }{2}}\,,} b = R a R † {\displaystyle \mathbf {b} =\mathbf {RaR} ^{\dagger }} R † = exp ( 1 2 B ^ θ ) = cos θ 2 + B ^ sin θ 2 {\displaystyle \mathbf {R} ^{\dagger }=\exp \left({\frac {1}{2}}{\hat {\mathbf {B} }}\theta \right)=\cos {\frac {\theta }{2}}+{\hat {\mathbf {B} }}\sin {\frac {\theta }{2}}} R {\displaystyle \scriptstyle R} B {\displaystyle B}
例: 軸周りの回転は
、 v̂を その双対二ベクトルに 変換することで実現できます。 ここで、 i = x̂ŷẑ は単位体積要素であり、3次元空間で唯一の三ベクトル(擬スカラー)です。結果は次のようになります。 v ^ = 1 3 ( x ^ + y ^ + z ^ ) {\displaystyle {\hat {\mathbf {v} }}={\frac {1}{\sqrt {3}}}\left({\hat {\mathbf {x} }}+{\hat {\mathbf {y} }}+{\hat {\mathbf {z} }}\right)} B ^ = x ^ y ^ z ^ v ^ = i v ^ , {\displaystyle {\hat {\mathbf {B} }}={\hat {\mathbf {x} }}{\hat {\mathbf {y} }}{\hat {\mathbf {z} }}{\hat {\mathbf {v} }}=\mathbf {i} {\hat {\mathbf {v} }}\,,} B ^ = 1 3 ( y ^ z ^ + z ^ x ^ + x ^ y ^ ) . {\displaystyle {\hat {\mathbf {B} }}={\frac {1}{\sqrt {3}}}\left({\hat {\mathbf {y} }}{\hat {\mathbf {z} }}+{\hat {\mathbf {z} }}{\hat {\mathbf {x} }}+{\hat {\mathbf {x} }}{\hat {\mathbf {y} }}\right)\,.}
しかし、三次元空間では、 iが 三次元のすべての物体と可換であり、かつ-1に二乗するという事実を利用して、 B̂ = iv̂ の式をそのまま残す方が簡単な場合が多い。この平面で x̂ ベクトルを角度 θ だけ回転させる 場合、
x ^ ′ = R x ^ R † = e − i v ^ θ 2 x ^ e i v ^ θ 2 = x ^ cos 2 θ 2 + i ( x ^ v ^ − v ^ x ^ ) cos θ 2 sin θ 2 + v ^ x ^ v ^ sin 2 θ 2 {\displaystyle {\hat {\mathbf {x} }}'=\mathbf {R} {\hat {\mathbf {x} }}\mathbf {R} ^{\dagger }=e^{-i{\hat {\mathbf {v} }}{\frac {\theta }{2}}}{\hat {\mathbf {x} }}e^{i{\hat {\mathbf {v} }}{\frac {\theta }{2}}}={\hat {\mathbf {x} }}\cos ^{2}{\frac {\theta }{2}}+\mathbf {i} \left({\hat {\mathbf {x} }}{\hat {\mathbf {v} }}-{\hat {\mathbf {v} }}{\hat {\mathbf {x} }}\right)\cos {\frac {\theta }{2}}\sin {\frac {\theta }{2}}+{\hat {\mathbf {v} }}{\hat {\mathbf {x} }}{\hat {\mathbf {v} }}\sin ^{2}{\frac {\theta }{2}}}
かつ − v̂x̂v̂ が v̂ に垂直な平面を軸とした x̂ の鏡映である ことを認識すると 、回転操作は幾何学的に解釈できる。回転は v̂ に平行な成分を保存し、垂直な成分のみを変化させる。そして、各項は以下のように計算される。 i ( x ^ v ^ − v ^ x ^ ) = 2 i ( x ^ ∧ v ^ ) {\displaystyle \mathbf {i} ({\hat {\mathbf {x} }}{\hat {\mathbf {v} }}-{\hat {\mathbf {v} }}{\hat {\mathbf {x} }})=2\mathbf {i} ({\hat {\mathbf {x} }}\wedge {\hat {\mathbf {v} }})} v ^ x ^ v ^ = 1 3 ( − x ^ + 2 y ^ + 2 z ^ ) 2 i x ^ ∧ v ^ = 2 i 1 3 ( x ^ y ^ + x ^ z ^ ) = 2 3 ( y ^ − z ^ ) {\displaystyle {\begin{aligned}{\hat {\mathbf {v} }}{\hat {\mathbf {x} }}{\hat {\mathbf {v} }}&={\frac {1}{3}}\left(-{\hat {\mathbf {x} }}+2{\hat {\mathbf {y} }}+2{\hat {\mathbf {z} }}\right)\\2\mathbf {i} {\hat {\mathbf {x} }}\wedge {\hat {\mathbf {v} }}&=2\mathbf {i} {\frac {1}{\sqrt {3}}}\left({\hat {\mathbf {x} }}{\hat {\mathbf {y} }}+{\hat {\mathbf {x} }}{\hat {\mathbf {z} }}\right)={\frac {2}{\sqrt {3}}}\left({\hat {\mathbf {y} }}-{\hat {\mathbf {z} }}\right)\end{aligned}}}
回転の結果は x ^ ′ = x ^ ( cos 2 θ 2 − 1 3 sin 2 θ 2 ) + 2 3 y ^ sin θ 2 ( sin θ 2 + 3 cos θ 2 ) + 2 3 z ^ sin θ 2 ( sin θ 2 − 3 cos θ 2 ) {\displaystyle {\hat {\mathbf {x} }}'={\hat {\mathbf {x} }}\left(\cos ^{2}{\frac {\theta }{2}}-{\frac {1}{3}}\sin ^{2}{\frac {\theta }{2}}\right)+{\frac {2}{3}}{\hat {\mathbf {y} }}\sin {\frac {\theta }{2}}\left(\sin {\frac {\theta }{2}}+{\sqrt {3}}\cos {\frac {\theta }{2}}\right)+{\frac {2}{3}}{\hat {\mathbf {z} }}\sin {\frac {\theta }{2}}\left(\sin {\frac {\theta }{2}}-{\sqrt {3}}\cos {\frac {\theta }{2}}\right)}
この結果の簡単な確認は角度 θ = 2 / 3 π 。このような回転は x̂ を ŷ に 。実際、回転は次のように簡約される。 x ^ ′ = x ^ ( 1 4 − 1 3 3 4 ) + 2 3 y ^ 3 2 ( 3 2 + 3 1 2 ) + 2 3 z ^ 3 2 ( 3 2 − 3 1 2 ) = 0 x ^ + y ^ + 0 z ^ = y ^ {\displaystyle {\begin{aligned}{\hat {\mathbf {x} }}'&={\hat {\mathbf {x} }}\left({\frac {1}{4}}-{\frac {1}{3}}{\frac {3}{4}}\right)+{\frac {2}{3}}{\hat {\mathbf {y} }}{\frac {\sqrt {3}}{2}}\left({\frac {\sqrt {3}}{2}}+{\sqrt {3}}{\frac {1}{2}}\right)+{\frac {2}{3}}{\hat {\mathbf {z} }}{\frac {\sqrt {3}}{2}}\left({\frac {\sqrt {3}}{2}}-{\sqrt {3}}{\frac {1}{2}}\right)\\&=0{\hat {\mathbf {x} }}+{\hat {\mathbf {y} }}+0{\hat {\mathbf {z} }}={\hat {\mathbf {y} }}\end{aligned}}}
予想通りです。この回転式はベクトルだけでなく、任意の 多重ベクトル にも有効です。さらに、オイラー角を使用すると、演算の複雑さが大幅に軽減されます。複合回転は回転子を掛け合わせることで得られるため、オイラー角から得られる回転子の総和は…となります が、 これらの回転子は指数関数から次のように求められます。 ここで、 R βは 元 の座標系における回転を表します。γ回転についても同様に、 R γ と R α は可換である
ことに注意します (同一平面における回転は可換である必要があります)。したがって、回転子の総和は次のようになります 。 R = R γ ′ R β ′ R α = exp ( − i z ^ ′ γ 2 ) exp ( − i x ^ ′ β 2 ) exp ( − i z ^ α 2 ) {\displaystyle \mathbf {R} =\mathbf {R} _{\gamma '}\mathbf {R} _{\beta '}\mathbf {R} _{\alpha }=\exp \left({\frac {-\mathbf {i} {\hat {\mathbf {z} }}'\gamma }{2}}\right)\exp \left({\frac {-\mathbf {i} {\hat {\mathbf {x} }}'\beta }{2}}\right)\exp \left({\frac {-\mathbf {i} {\hat {\mathbf {z} }}\alpha }{2}}\right)} x ^ ′ = R α x ^ R α † and z ^ ′ = R β ′ z ^ R β ′ † . {\displaystyle {\begin{aligned}{\hat {\mathbf {x} }}'&=\mathbf {R} _{\alpha }{\hat {\mathbf {x} }}\mathbf {R} _{\alpha }^{\dagger }\quad {\text{and}}\\{\hat {\mathbf {z} }}'&=\mathbf {R} _{\beta '}{\hat {\mathbf {z} }}\mathbf {R} _{\beta '}^{\dagger }\,.\end{aligned}}} R β ′ = cos β 2 − i R α x ^ R α † sin β 2 = R α R β R α † {\displaystyle \mathbf {R} _{\beta '}=\cos {\frac {\beta }{2}}-\mathbf {i} \mathbf {R} _{\alpha }{\hat {\mathbf {x} }}\mathbf {R} _{\alpha }^{\dagger }\sin {\frac {\beta }{2}}=\mathbf {R} _{\alpha }\mathbf {R} _{\beta }\mathbf {R} _{\alpha }^{\dagger }} R γ ′ = R β ′ R γ R β ′ † = R α R β R α † R γ R α R β † R α † . {\displaystyle \mathbf {R} _{\gamma '}=\mathbf {R} _{\beta '}\mathbf {R} _{\gamma }\mathbf {R} _{\beta '}^{\dagger }=\mathbf {R} _{\alpha }\mathbf {R} _{\beta }\mathbf {R} _{\alpha }^{\dagger }\mathbf {R} _{\gamma }\mathbf {R} _{\alpha }\mathbf {R} _{\beta }^{\dagger }\mathbf {R} _{\alpha }^{\dagger }\,.} R = R α R β R γ {\displaystyle \mathbf {R} =\mathbf {R} _{\alpha }\mathbf {R} _{\beta }\mathbf {R} _{\gamma }}
したがって、オイラー角の複合回転は、元の固定フレーム内の同等の回転のシリーズになります。
幾何代数における回転子は3次元の四元数とほぼ同じように機能しますが、この形式主義の強みはその汎用性にあります。この手法は任意の次元数の空間に適切かつ有効です。3次元では、回転は3つの自由度を持ち、回転が起こり得る線形独立な平面(双ベクトル)ごとに1つの自由度を持ちます。四元数のペアを用いて4次元の回転を生成し、6つの自由度が得られることが知られており、幾何代数的アプローチはこの結果を検証しています。4次元では、回転の生成元として使用できる6つの線形独立な双ベクトルが存在します。
参照
参考文献 ^
「拡張現実のための基準マーカー追跡」。 ^ Weisstein, Eric W. 「回転行列」 。MathWorld 。 ^ ab ロドリゲス、オリンデ (1840)。 「空間の安定したシステムの配置を決定する地理的配置、および生産性の高いシステムの配置を考慮した独立した配置のバリエーション。」 J.Math. Pures Appl . 5 : 380~ 440。 オンライン ^ J・ウィラード・ギブス(1884年) 『ベクトル解析の要素 』ニューヘイブン、67ページを参照 ^ 順運動学と逆運動学の講義ノート、5ページ ^ Mebius, Johan (2007). 「4次元回転の一般式からの3次元回転のオイラー・ロドリゲス公式の導出」 arXiv : math/0701759 . ^ シュスター、マルコム・D. (1993). 「態度表現の調査」 (PDF) . 宇宙科学ジャーナル . 41 (4): 439– 517. ^ [1] 物理学 - マーク・イオッフェ - 行列で表される W ( t ) ^ 四元数と回転の講義ノート、14-15ページ
さらに読む シュスター, MD (1993). 「姿勢表現の概観」 (PDF) . 宇宙科学ジャーナル . 41 (4): 439– 517. Taubin, G. (2011). 「3D回転」. IEEEコンピュータグラフィックスとアプリケーション . 31 (6): 84– 89. doi :10.1109/MCG.2011.92. PMID 24808261. Coutsias, E.; Romero, L. (2004). 「四元数と剛体力学への応用」. サンディア技術報告書 . サンディア国立研究所. SAND2004-0153. Markley, F. Landis (2003). 「カルマンフィルタにおける姿勢誤差表現」. Journal of Guidance, Control and Dynamics . 26 (2): 311–7 . doi :10.2514/2.5048. hdl : 2060/20020060647 . ゴールドスタイン, H. (1980). 古典力学 (第2版). アディソン・ウェスレー. ISBN 0-201-02918-9 。 ワーツ、ジェームズ・R.(1980) 『宇宙船の姿勢決定と制御 』 D.ライデル社 、 ISBN 90-277-1204-2 。 Schmidt, J.; Niemann, H. (2001). 「制約なし非線形最適化における3次元回転のパラメータ化におけるクォータニオンの使用」. ビジョンモデリングおよび可視化カンファレンス2001の議事録 . IOS Press. pp. 399– 406. ISBN 3-89838-028-9 。 ランダウ、L.リフシッツ、EM (1976)。 力学 (第 3 版)。 ペルガモンプレス 。 ISBN 0-08-021022-8 。 Klumpp, AR (1976年12月). 「方向余弦行列からの特異点フリーなクォータニオン抽出」. Journal of Spacecraft and Rockets . 13 (12): 754–5 . doi :10.2514/3.27947. Doran, C.; Lasenby, A. (2003). 『物理学者のための幾何代数』 ケンブリッジ大学出版局. ISBN 978-0-521-71595-9 。 Terzakis, G.; Lourakis, M.; Ait-Boudaoud, D. (2018). 「修正ロドリゲスパラメータ:3Dビジョンとグラフィックスにおける効率的な方向表現」. Journal of Mathematical Imaging and Vision . 60 (3): 422– 442. doi : 10.1007/s10851-017-0765-x . Rowenhorst, D.; Rollett, AD; Rohrer, GS; Groeber, M.; Jackson, M.; Konijnenberg, PJ; De Graef, M. (2015). 「3次元回転の一貫した表現と3次元回転間の変換」. 材料科学と工学におけるモデリングとシミュレーション . 23 (8) 083501. doi : 10.1088/0965-0393/23/8/083501 .
外部リンク ウィキメディア コモンズには、3 次元での回転 に関連するメディアがあります 。
EuclideanSpaceには回転表現に関する豊富な情報がある Q36. オイラー角から回転行列を生成するにはどうすればよいですか? Q37. 回転行列をオイラー角に変換するにはどうすればよいですか? — 行列と四元数に関するFAQ 虚数は実数ではない - 時空の幾何学代数 - 「回転と幾何学代数」のセクションでは回転の回転子の記述を導出し適用する StarlinoのDCMチュートリアル – 方向余弦行列理論のチュートリアルと応用。加速度計、ジャイロスコープ、磁力計を備えたIMUデバイスを用いた空間方向推定アルゴリズム。DCM行列を用いた相補フィルタ(カルマンフィルタの一般的な代替手段)の使用。