四元数と空間回転

ベルソルとして知られる単位四元数は、 3次元空間における要素の空間的な向き回転を表すための便利な数学的表記法を提供します。具体的には、任意の軸を中心とした軸角回転に関する情報をエンコードします。回転四元数と向きの四元数は、コンピュータグラフィックス[1]コンピュータビジョンロボット工学[2]ナビゲーション分子動力学飛行力学[3]衛星軌道力学[ 4] 、結晶構造解析[5]などに応用されています

回転を表すために使用される場合、単位四元数は3次元回転群を表すため、回転四元数とも呼ばれます。向き(基準座標系に対する回転)を表すために使用される場合、向き四元数または姿勢四元数と呼ばれます。オイラー軸を表す単位軸を中心としたラジアンの固定点の周りの空間回転は、四元数で与えられます。ここで、およびです

回転行列と比較して、四元数はよりコンパクトで効率的であり、数値的に安定していますオイラー角と比較して、四元数はより簡単に構成できます。ただし、四元数は直感的で理解しやすいわけではなく、正弦と余弦の周期的な性質により、自然周期だけ正確に異なる回転角度は同一の四元数にエンコードされ、ラジアン単位で復元された角度は に制限されます

四元数を回転として使用する

オイラー軸( )を中心とした角度 による回転の3D視覚化

3次元空間において、オイラーの回転定理によれば、剛体または座標系の固定点を中心とした任意の回転または回転の連続は、固定点を通る固定軸(オイラー軸と呼ばれる)を中心とした所定の角度の単一回転に相当します。[6]オイラー軸は通常、単位ベクトル図では)で表されます。したがって、3次元における任意の回転は、ベクトルと角度で表すことができます  

四元数は、この軸と角度の表現を4つの実数を用いて符号化する簡単な方法を提供し、対応する回転をR 3における原点を基準とした点を表す位置ベクトル (x,y,z)に適用(計算)するために使用できます。[7]

(2, 3, 4)( a x ,  a y ,  a z )などのユークリッドベクトルは、2  i + 3  j + 4  kまたはa x i + a y j + a z kと書き直すことができます。ここで、 ijkは3つの直交座標軸(伝統的にはxyz)を表す単位ベクトルです。また、ユークリッドベクトル( a x、  a y、  a z )を純粋四元数(0, a x、  a y、  a z )のベクトル部分として解釈することにより、基本四元数単位の乗法規則にも従います

単位ベクトルによって定義される軸の周りの角度の回転は、

単位四元数qによる共役で表すことができます。四元数の積は1となるため、指数関数のテイラー級数を用いてオイラーの公式拡張すると次のようになります

[8]によれば、3次元空間の通常のベクトル(純粋四元数のベクトル部分として考えた場合)に、 p と qの 共役を評価することで、目的の回転を適用できることがわかる

ハミルトン積を用いて、純粋四元数L( p ) = (0, r x ,  r y ,  r z )のベクトル部分は、回転後の点の新しい位置ベクトルです。プログラムによる実装では、共役は、ベクトル部分がpである純粋四元数を構築し、次に四元数共役を実行することによって実現されます。結果として得られる純粋四元数のベクトル部分は、目的のベクトルrです。明らかに、は四元数空間の自身への線形変換を提供します。[9]また、はユニタリなので、変換は等長変換です。また、そしてなので、平行ベクトルは不変です。したがって、をのベクトル部分に平行なベクトル とのベクトル部分に垂直なベクトルとして分解し、をの法線成分に 適用すると回転することを示すことで、主張が示されます。したがって、をのベクトル部分に直交するの成分とし、とします。のベクトル部分は次のように与えられる ことがわかります。

p qの共役は、より少ない算術演算で次のように表すことができます

四元数に依存しない幾何学的事実は、物理的な回転から回転変換行列への 2 対 1 の写像が存在することです。 0 ⩽ ⩽の場合、による物理的な回転とによる物理的な回転はどちらも、中間の向きを通る互いに素な経路によって同じ最終向きを実現します。上記のqの式にこれらのベクトルと角度を代入すると、 q が最初の回転を表す場合、qが 2 番目の回転を表すことがわかります。 これは、 qによる共役とqによる共役によって必ず同じ回転変換行列が生成されることの幾何学的証明です。 この事実は、共役がqの 2 次であるためqの符号が打ち消されて結果に影響しないことを指摘することで代数的に確認されます。 ( SU(2) から SO(3) への 2:1 写像を参照) 両方の回転が半回転の場合qq の実座標はどちらも 0 になります。それ以外の場合、一方は正の実部を持ち、角度θ より小さい回転を表します。もう一方は負の実部を持ち、角度θ より大きい回転を表します

数学的には、この操作は、四元数間の3次元空間を構成するすべての「純粋な」四元数p (実部がゼロのもの)の集合を、軸uを中心とした角度θの回転によって、それ自体に取り込みます。(各実四元数は、この操作によってそれ自体に取り込まれます。ただし、3次元空間での回転の目的では、実四元数は無視します。)

視線が と同じ方向を向いている場合、回転は時計回りです

この[どの? ]例では、q単位四元数であり、

したがって、2つの四元数の積による共役は、これらの四元数による共役の合成です。pq が単位四元数である場合、 pqによる回転(共役) 

これはqで回転(共役)してから pで回転(共役)するのと同じです 。結果のスカラー成分は必然的にゼロになります

回転の逆四元数は、逆の回転です。なぜなら、 だからです。四元数回転の2乗は、同じ軸の周りの角度の2倍の回転です。より一般的には、q nは、 qと同じ軸の周りの角度のn倍の回転です 。これは任意の実数nに拡張でき、空間方向間の滑らかな補間が可能になります。Slerp参照してください。

2つの回転四元数は、次の関係によって1つの同等の四元数に結合することができます。

ここで、q ′ は、回転q 1に続いて回転q 2に対応します。したがって、任意の数の回転を組み合わせて、1つの回転として適用できます。(四元数の乗算は可換ではないことに注意してください。)

共役演算の例

最初の対角線の周りの120°の回転は、 ijk を巡回的に入れ替えます

pを q 共役することは、 pqpq −1という演算を指します

軸の周りの回転fを考えます。回転角は120°、つまり /3  ラジアンです

pq pの場合、 q = 1 + i + j + k /2単位3次元球面上では、この片側(つまり)の乗算は、四元数の60°回転となります。

の長さは√3 半角は π /3 (60°)で、コサインは 1 /2、( cos 60° = 0.5 )、サインは /2 ( sin 60 ° ≈ 0.866 )です。したがって、単位四元数による共役を扱っています。

fが回転関数の場合、

単位四元数の逆行列は、虚数成分の符号を変えるだけで得られることが証明できます。結果として、

そして

これは、四元数演算の通常の規則を用いて、次のように簡略化できます。

予想通り、回転は立方体を1点に固定し、その固定点を通る長対角線を中心に120°回転させることに相当します(3つの軸が周期的に入れ替わっていることに注意してください)。

四元数から導出される回転行列

四元数回転( )は、代数的に行列回転に操作できます。ここで、は回転行列であり、次のように与えられます。 [10]

ここで単位四元数である場合、 です。

と をスカラー部分とベクトル部分として表し、式 の乗算演算の公式を使用すれば、ベクトル解析と線形代数を用いてこれを得ることができます。を、書き、 とすると、式は になります。スカラー部分とベクトル部分として表される2つの四元数の乗算の公式を使用すると、

この式は と書き直すことができます。

外積単位行列ベクトルを右から乗算すると外積 を与える変換行列です

なので、を として識別でき、これを展開すると上記の行列形式で書かれた式になります。

軸-角度表現の復元

この式は、ベクトル で与えられた軸を中心に、任意のベクトル四元数を角度だけ回転させます。 ここでは四元数に依存します。

次の式から求められます。

ここで、 は2つの引数を持つ逆正接 です。は機能しますが、有限精度の数に対して の近くでは数値的に不安定(不正確)です。

四元数がスカラーに近づく場合、退化により恒等回転の軸が明確に定義されない ため、注意が必要です。

空間回転の合成

2つの回転R BR Aの合成を四元数で定式化する利点は、合成回転R C = R B R Aの回転軸と角度が直接得られることです

空間回転Rに関連付けられた四元数を、その回転軸 Sと、この軸の周りの回転角から構築するとします。関連付けられた四元数は次のように与えられます。回転R BR Aの合成は、回転軸と角度が四元数の積で定義される回転R C = R B R Aです。これは

この積を展開して

この式の両辺を球面上の余弦定理である恒等式で割り、計算します。

これは、2つの回転の軸で定義される合成回転の軸に関するロドリゲスの公式です。彼はこの公式を1840年に導きました(408ページ参照)。 [11]

3つの回転軸ABCは球面三角形を形成し、この三角形の辺によって形成される平面間の二面角は回転角によって定義されます。ハミルトン[12]はこれらの方程式の成分形式を提示し、四元数積は与えられた2つの頂点とそれらに関連する弧長から球面三角形の3番目の頂点を計算し、これは楕円幾何における点の代数も定義することを示しました

軸と角度の合成

正規化された回転軸は、展開された積からを除去すると、回転軸であるベクトルに定数を乗じたものが残ります。軸ベクトルがまたはベクトルが に近い場合、つまり任意の軸の周りの回転が0である場合、軸ベクトルを正規化する際には注意が必要です。これは恒等回転、または任意の軸の周りの回転です。

または角度の加算と三角関数の置換で…

最後に回転軸を正規化すると:または

回転四元数に関する微分

回転を数値最適化から推定する場合、回転四元数p' = q p q −1は回転四元数qに関して微分する必要があります。回転角度の推定は、3Dオブジェクトのレジストレーションやカメラキャリブレーションにおいて不可欠な手順です。ユニタリqと純虚数pの場合、つまり3D空間での回転の場合、回転四元数の微分は行列計算表記法を用いて次のように 表すことができます。

導出は[13]にあります。

背景

四元数

複素数は、通常の代数規則に加えてi 2 = −1という規則を満たす抽象記号iを導入することで定義できます。これは、複素数演算のすべての規則を再現するのに十分です。例えば:

同様に、四元数はi 2 = j 2 = k 2 = i j k = −1という規則と、乗法の交換法則このような非可換乗算のよく知られた例は行列乗算です)を除く通常の代数規則を満たす抽象記号ij kを導入することで定義できます。これにより、四元数基底元の乗算に関する規則など、四元数演算のすべての規則が導かれます。これらの規則を用いて、次のことを示すことができます

四元数の虚数部は3次元ベクトル空間ではベクトルのように振る舞い、実数部はRではスカラーのように振る舞います。四元数を幾何学で使用する場合、スカラーとベクトルの組み合わせとして定義する方が便利です

ベクトルは非常に異なる性質を持つオブジェクトであるため、数値をベクトル加えたり、 2つのベクトルを掛け合わせたりするのは奇妙に感じる人もいるかもしれません。この演算は通常定義されていないためです。しかし、これは四元数の実数部と虚数部の単なる表記法であることを覚えておけば、より正当なものになります。言い換えれば、正しい推論は、ベクトル/虚数部がゼロの四元数と、スカラー/実数部がゼロの四元数を2つ加えることです

四元数の乗算は、ベクトルのクロス積ドット積という現代的な言語で表現できます(これらはそもそも四元数にヒントを得たものです[14] )。ベクトル/虚数部を乗算する場合、 i 2 = j 2 = k 2 = ijk = −1という規則の代わりに、四元数の乗算規則を使用します。

ここで、

  • は結果として得られる四元数、
  • はベクトルのクロス積(ベクトル)、
  • はベクトルのスカラー積(スカラー)です

四元数の乗算は非可換です(外積がと反可換であるため)。一方、スカラー-スカラー乗算とスカラー-ベクトル乗算は可換です。これらの規則から、次の式が直ちに導かれます(四元数 § 四元数と3次元幾何学 を参照)。

非零四元数の(左と右の)逆数は、共役ノルム比で与えられます(詳細を参照)。

は直接計算で確認できます(複素数の逆数との類似性に注意)。

回転恒等式

を単位ベクトル(回転軸)とし、 とします目標は、

は軸 を中心に角度 回転したベクトルを生成します。展開すると( を念頭に置いて)、

と をそれぞれに垂直な と に平行なの成分と等しくするととなり、

三角関数のピタゴラス等式と倍角恒等式を用いると

これはu の周り回転の式です。

四元数の回転演算

このセクションで使用されている特性の非常に形式的な説明は、Altman [15]によって与えられています。

回転の超球面

回転空間の視覚化

単位四元数は、ユークリッド回転の群を3次元非常にわかりやすい方法で表します。回転と四元数の対応は、まず回転空間自体を視覚化することで理解できます。

回転空間における、角度と軸の両方が異なる2つの別々の回転。ここで、各軸ベクトルの長さは、その軸の周りの回転のそれぞれの大きさに相対的です

回転空間を視覚化するには、より単純なケースを考えるのが分かりやすい。3次元におけるあらゆる回転は、ある軸を中心としたある角度の回転で記述できる。ここでは、角度の向きを定めるために軸ベクトルを用いる。回転軸がxy平面にある特殊なケースを考えてみよう。この場合、これらの回転の軸を、ベクトルが交差する円上の点によって指定し、円の半径を選択して回転角度を表すことができる

同様に、回転軸がxy平面にある回転は、3次元内の固定半径の球面上の点として記述できます。3 次元空間の球面の北極から開始し、北極の点を恒等回転(角度 0 の回転)として指定します。恒等回転の場合と同様に、回転軸は定義されず、回転角度(ゼロ)は無関係です。回転角度が非常に小さい回転は、球面を xy平面に平行で北極に非常に近いスライスに指定することで指定できます。このスライスによって定義される円は非常に小さくなり、回転角度が小さいことに対応します。回転角度が大きくなるにつれて、スライスは負のz方向に移動し、円は球面の赤道に達するまで大きくなります。赤道に達すると、回転角度は 180 度に相当します。南に向かって進むと、円の半径は小さくなります(回転角度の絶対値が負の数と見なされることに対応します)。最後に、南極に到達すると、円は再び縮小して恒等回転となり、これも南極の点として指定されます。

この視覚化によって、このような回転とその表現の多くの特徴がわかることに注意してください。回転空間は連続しており、各回転にはほぼ同じ回転の近傍があり、近傍が縮小するにつれてこの近傍は平坦になります。また、各回転は実際には球面上の2つの対蹠点によって表され、これらの点は球の中心を通る線の両端にあります。これは、各回転が何らかの軸を中心とした回転、または同等に、反対方向を指す軸を中心とした負の回転(いわゆる二重被覆)として表すことができるという事実を反映しています。特定の回転角度を表す円の「緯度」は、その回転によって表される角度の半分になります。これは、点が北極から南極に移動すると、緯度は0度から180度の範囲になりますが、回転角度は0度から360度の範囲になるためです(この場合点の「経度」は特定の回転軸を表す。)ただし、この回転集合は合成に関して閉じていないことに注意されたい。xy平面に軸を持つ2つの連続する回転は、必ずしもxy平面に軸を持つ回転を与えるとは限らず、したがって球面上の点として表すことはできない。これは、回転が合成に関して閉集合を形成する3次元空間における一般的な回転には当てはまらない

水平軸( xy平面)を持つ回転の回転球面

この視覚化は、3次元空間における一般的な回転に拡張できます。恒等回転は点であり、ある軸を中心とした小さな回転角は、小さな半径を持つ球面上の点として表すことができます。回転角が大きくなるにつれて球面は大きくなり、回転角が180度に達すると球面は縮小し始め、角度が360度(または負の方向から0度)に近づくにつれて点になります。この拡大する球面と収縮する球面の集合は、4次元空間(3次元球面)における超球面を表します。上記のより単純な例と同様に、超球面上の点として表される各回転は、その超球面上の対蹠点と一致します超球面上の「緯度」は対応する回転角の半分となり、任意の点の近傍は、近傍が縮小するにつれて「平坦」になります(つまり、点の3次元ユークリッド空間で表現されます)。この挙動は単位四元数集合と一致します。一般四元数は4次元空間内の点を表しますが、単位の大きさに制約すると、超球面の面に相当する3次元空間が得られます。単位四元数の大きさは1で、単位半径の超球面に対応します。単位四元数のベクトル部分は、回転軸に対応する2次元球面の半径を表し、その大きさは回転角の半分の正弦です。各回転は、符号が反対の2つの単位四元数で表され、3次元の回転空間と同様に、2つの単位四元数の四元数積は単位四元数になります。また、単位四元数の空間は、与えられた単位四元数の任意の微小近傍において「平坦」です。

回転空間のパラメータ化

緯度と経度などの2つの座標で球面をパラメータ化できます。しかし、緯度と経度は、北極と南極では振る舞いが悪くなります(毛玉定理で説明されているように退化します)。ただし、極は球上の他の点と本質的に異なるわけではありません。極(緯度+90°と-90°)では、経度は無意味になります

2 パラメータ座標系ではこのような退化を回避できないことが示されています。 このような問題は、球を 3 次元空間に埋め込み、3 つの直交座標( w、  x、  y )でパラメータ化し、北極を( w、  x、  y ) = (1、 0、 0)、南極を( w、  x、  y ) = (−1、 0、 0)、赤道をw = 0x 2 + y 2 = 1に配置することで回避できます。 球上の点は制約w 2 + x 2 + y 2 = 1を満たすため、座標が 3 つあっても自由度は2 つだけです。 球上の点( w、  x、  y )は、通常の空間で、ベクトル( x、  y、 0)の方向の水平軸の周りの角度 による回転を表します

同様に、3次元回転の超球面空間は3つの角度(オイラー角)でパラメータ化できますが、そのようなパラメータ化は超球面上のいくつかの点で退化し、ジンバルロックの問題を引き起こします。これは、 w 2 + x 2 + y 2 + z 2 = 1となる4つのユークリッド座標w、  x、  y、  zを使用することで回避できます。点( w、  x、  y、  z )は、ベクトル( x、  y、  z )が方向付ける軸の周りの角度による回転を表します。

回転による四元数の特性の説明

非可換性

サイコロの非可換回転

四元数の乗算は非可換である。この事実は、定義上q q −1 = 1であるpq p q −1という式がどのようにして成り立つのかを説明できる。単位四元数の乗算は三次元回転の合成に対応するため、三次元回転が一般に可換ではないことを示すことで、この性質を直感的に理解できる。

右の図はサイコロでこれを説明しています。右手で90度回転を2回行います。両方のサイコロは、最初は左上隅に示されているように配置されています(上面に1つの点)。経路Aは、右手の法則を使用して-y軸を中心とした回転から始まり、次に+ z軸を中心とした回転が続き、左下隅に示されているように配置されます(上面に5つの点)。経路Bは回転の順序を逆にし、上部に3つの点が配置されます。

あるいは、2冊の本を並べて配置します。片方をz軸を中心に時計回りに90度回転させ、次にx軸を中心に180度反転させます。もう片方の本を、最初にx軸を中心に180度回転させ、次にz軸を中心に時計回りに90度反転させます。2冊の本は最終的に平行になりません。これは、一般に、2つの異なる空間軸を中心とした2つの異なる回転の合成は交換されないことを示しています。

方向

軸と角度の表現を定義するために使用されるベクトル外積は、空間に方向性(「利き手性」)を与えます。3次元ベクトル空間では、方程式a  ×  b = cの3つのベクトルは常に右手系の集合(または外積の定義方法に応じて左手系の集合)を形成し、ベクトル空間における方向性を固定します。あるいは、方向性への依存性は、軸ベクトルに対する回転を指定するようなものを参照することで表現されます。四元数形式では、空間の方向性の選択は乗算の順序に対応します。ij = kですが、ji =kです。方向性を逆にすると、上記の式はpq −1 p qになります。つまり、単位qが共役四元数に置き換えられます。これは軸ベクトルと同じ振る舞いです。

代替規約

[16]によると、航空宇宙分野、そして程度は低いもののロボット工学分野では、代替の四元数表記法の存在と継続的な使用が、多大な継続的なコストを発生させている報告されています。この代替表記法は[17]でシュスター医学博士によって提案されており四元基底要素の乗算の定義をシュスターの表記法では と逆にすることで従来の表記法から逸脱しています。一方、ハミルトンの定義は です。この表記法は、 NASAジェット推進研究所の一部で使用されているため、「JPL表記法」とも呼ばれています

シュスターの表記法では、2つの四元数を乗算する式は次のように変更される。

ベクトルを四元数で回転させる式は次のように変更される。

シュスターの表記法による変更点を確認するには、外積の前の符号がプラスからマイナスに反転している点に注目してください。

最後に、四元数を回転行列に変換する式は次のように変更されます

これは、従来の規則に従って変換された回転行列の転置と全く同じです。

使用される規則によるソフトウェアアプリケーション

以下の表は、アプリケーションをいずれかの四元数規則に準拠しているかどうかでグループ分けしています。[16]

ハミルトン乗算規則シュスター乗算規則
  • Microsoft DirectX数学ライブラリ

どちらの規則を使用しても、作成されたアプリケーションの機能や正確性には影響しませんが、 [16]の著者は、シュスター規則はハミルトンによるはるかに古い四元数乗算規則から逸脱しており、数学や理論物理学の分野で採用される可能性は低いため、放棄すべきだと主張しました。

回転の他の表現との比較

四元数の利点

回転を四元数(4つの数値)で表現すると、直交行列(9つの数値)で表現するよりもコンパクトになります。さらに、与えられた軸と角度に対して、対応する四元数を簡単に構築でき、逆に、与えられた四元数に対して、軸と角度を簡単に読み取ることができます。これらはどちらも、行列やオイラー角でははるかに困難です

ビデオゲームやその他のアプリケーションでは、「滑らかな回転」、つまりシーンが一回ではなくゆっくりと回転することが求められることがよくあります。これは、クォータニオンにおける球面線形補間などの曲線を選択することで実現できます。一方の端点は恒等変換1(またはその他の初期回転)であり、もう一方の端点は意図した最終的な回転です。これは、他の回転表現ではより問題になります。

コンピュータ上で複数の回転を合成する場合、丸め誤差は必然的に蓄積されます。わずかにずれたクォータニオンは、正規化後も回転を表します。わずかにずれた行列はもはや直交していない可能性があり、適切な直交行列に戻すのが難しくなります

四元数は、例えばピッチ/ヨー/ロール回転システムにおいて、ピッチが90°上下に回転するとヨーとロールが同じ動きに対応し、回転の自由度が失われる場合に発生するジンバルロックと呼ばれる現象も回避します。例えば、ジンバルベースの航空宇宙慣性航法システムでは、航空機が急降下または上昇している場合、これは悲惨な結果をもたらす可能性があります。

行列表現との間の変換

四元数から直交行列への変換

列ベクトルを後置乗算した場合の単位四元数z = a + b i + c j + d k| z | = 1 )による回転に対応する直交行列、次のように与えられます。

この回転行列は、ベクトルw上でとして使用されます。この回転の四元数表現は次のように与えられます。

ここで、は四元数の共役であり、次のように与えられます

また、四元数の乗算は次のように定義されます(abは上記のzのように四元数であると仮定します)。

ここで、2つのベクトルの外積は可換ではないため、 abの順序は重要です。

四元数を単位正規化する必要がない、より効率的な計算は[20]で与えられます。

ここで、以下の中間量が定義されています。

直交行列から四元数へ

回転行列を四元数に変換する際には注意が必要です。回転行列のトレース(対角要素の和)が0または非常に小さい場合、いくつかの単純な方法は不安定になる傾向があるためです。直交行列を四元数に変換する安定した方法については、回転行列#四元数を参照してください。

四元数のフィッティング

上のセクションでは、3×3回転行列Qから四元数qを復元する方法を説明しました。しかし、例えば丸め誤差のために純粋な回転ではない行列Qがあり、 Q を最も正確に表す四元数qを見つけたいとします。その場合、対称4×4行列 を構築します

そして、最大の固有値に対応する固有ベクトル ( x ,  y ,  z ,  w )を求めます(その値は、 Qが純粋な回転の場合にのみ 1 になります)。こうして得られた四元数は、元の行列Q に最も近い回転に対応します[疑わしい議論が必要][21]

パフォーマンス比較

このセクションでは、3D で回転を実行するために四元数を使用する場合と他の方法(軸/角度または回転行列)を使用する場合のパフォーマンスへの影響について説明します。

結果

ストレージ要件
方法ストレージ
回転行列9 または 6(下記参照)
四元数4 または 3(下記参照)
角度–軸4 または 3(下記参照)

回転は単位四元数で表されるため、四元数の要素のうち独立しているのは3つだけです。さらに計算するには通常4つの要素すべてが必要になるため、すべての計算で4番目の要素を復元するための追加コストが発生します。同様に、角度軸は単位方向に角度(またはその関数)を乗算することで3要素ベクトルに格納できますが、計算に使用する場合は追加の計算コストがかかります。同様に、回転行列には直交基底ベクトルが必要であるため、3次元空間では最初の2つのベクトルの外積を用いて3番目のベクトルを明確に計算できます(ただし、不適切な回転が許容される場合、3番目のベクトルの符号には曖昧さがあります)。

回転連鎖演算の性能比較
方法乗算回数加算/減算回数演算合計
回転行列271845
四元数161228
ベクトル回転演算の性能比較[22] [23]
方法乗算回数加算/減算回数sin/cos演算合計
回転行列96015
四元数 *中間行列なし1515030
中間行列あり2118039
角度軸中間行列なし1813231 + 2
中間行列あり2116237 + 2

* 四元数は、回転行列(12回の乗算と12回の加算/減算)に暗黙的に変換できます。これにより、回転行列法による以下のベクトルの回転コストが平準化されます。

使用される方法

ベクトルv を回転させるには、3つの基本的なアプローチがあります。

  1. 3×3 回転行列 Rと、 v を表す元の3×1 行列との行列積を計算します。これには、3×(3回の乗算 + 2回の加算)= 9回の乗算と6回の加算が必要であり、ベクトルを回転させる最も効率的な方法です
  2. 回転は、スカラー(実数)部wとベクトル(虚数)部r を持つ単位長さの四元数q = ( w ,  r )で表すことができます。回転は、式 を用いて3次元ベクトルv に適用できます。評価には15回の乗算と15回の加算のみが必要です(2の因数を乗算で計算する場合は、18回の乗算と12回の加算で済みます)。この式は、もともと軸/角度表記(ロドリゲスの公式)で使用されると考えられていましたが、四元数表記にも適用できます。これは、効率は劣るものの、よりコンパクトな四元数乗算の式 と同じ結果をもたらします
  3. 角度/軸の公式を使用して角度/軸を回転行列 Rに変換し、ベクトルを乗算するか、同様に、四元数表記を回転行列に変換する公式を使用してベクトルを乗算します。角度/軸をRに変換するには、 12回の乗算、2回の関数呼び出し(sin、cos)、10回の加算/減算が必要です。項目1から、Rを使用して回転すると、さらに9回の乗算と6回の加算が追加され、合計21回の乗算、16回の加算/減算、2回の関数呼び出し(sin、cos)になります。四元数をRに変換するには、12回の乗算と12回の加算/減算が必要です。項目1から、Rを使用して回転すると、さらに9回の乗算と6回の加算が追加され、合計21回の乗算と18回の加算/減算になります。
nベクトル回転演算のパフォーマンス比較
方法乗算回数加算/減算回数sin/cos演算合計
回転行列9 n6 n015 n
四元数 *中間行列なし15 n15 n030 n
中間行列あり9 n + 126 n + 12015 n + 24
角度軸中間行列なし18 n12 n + 1230 n + 3
中間行列あり9 n + 126 n + 10215 n + 24

4次元空間における回転としての単位四元数のペア

単位四元数のペアと は4次元空間における任意の回転を表すことができます。四元数 として表現された4次元ベクトル が与えられた場合、次のように回転させることができます。

ここで、行列 と はそれぞれ左と右の四元数の乗算を表します。これらの行列を合わせると、における回転の等傾斜分解を形成します。四元数の乗算は結合的であるため、次の式が成り立ちます 。

したがって、2つの行列と は交換可能でなければなりません。これは、4次元回転の群内に2つの交換可能な部分群が存在することを意味します。任意の4次元回転には6つの自由度があり、各行列はこれらの6つの自由度のうち3つに貢献します

4次元回転の生成元は、四元数のペアで表すことができるため(以下のように)、すべての4次元回転も表すことができます。

参照

参考文献

  1. ^ Shoemake, Ken (1985). "Animating Rotation with Quaternion Curves" (PDF) . Computer Graphics . 19 (3​​): 245– 254. doi :10.1145/325165.325242.SIGGRAPH '85で発表.
  2. ^ JM McCarthy, 1990, Introduction to Theoretical Kinematics, MIT Press
  3. ^ Amnon Katz (1996) Computational Rigid Vehicle Dynamics , Krieger Publishing ISBN 978-1575240169
  4. ^ JBカイパース (1999)『クォータニオンと回転シーケンス:軌道、航空宇宙、仮想現実への応用入門』プリンストン大学出版局 ISBN 978-0-691-10298-6
  5. ^ Karsten Kunze、Helmut Schaeben (2004年11月). 「四元数のビンガム分布とテクスチャ解析における球状ラドン変換」. Mathematical Geology . 36 (8): 917–943 . doi :10.1023/B:MATG.0000048799.56445.59. ResearchGate :226385995.
  6. ユークリッド幾何学と非ユークリッド幾何学. Patrick J. Ryan, Cambridge University Press, Cambridge, 1987.
  7. ^ I.L. Kantor. Hypercomplex numbers , Springer-Verlag, New York, 1989.
  8. ^ Andrew J. Hanson. Visualizing Quaternions, Morgan Kaufmann Publishers, Amsterdam, 2006
  9. ^ JH ConwayとDA Smith. 四元数と八元数について、AK Peters、マサチューセッツ州ネイティック、2003年。
  10. ^ "comp.graphics.algorithms FAQ" 2017年7月2日閲覧。
  11. ^ ロドリゲス、O. (1840). 「空間における固体システムの変位を制御する幾何学的法則、そして、生産に影響を及ぼす原因とは独立して考えられる変位の座標変化」. Journal de Mathématiques Pures et Appliquées . Série 1. 5 : 380–440 .
    フリードバーグ、リチャード (2022). 「ロドリゲス、オリンデ:「固体システムの変位を制御する幾何学的法則…」、翻訳と解説」. arXiv : 2211.07787 [math.HO]
  12. ^ ウィリアム・ローワン・ハミルトン(1844~1850)「四元数、あるいは代数学における新しい虚数体系について」『哲学雑誌』 、ダブリン・トリニティ・カレッジのデイヴィッド・R・ウィルキンス・コレクションへのリンク
  13. ^ Lee, Byung-Uk (1991)、「四元数による微分、付録B」(PDF)頭蓋骨ランドマークのステレオマッチング(博士論文)、スタンフォード大学、pp.  57-58
  14. ^ Altmann, Simon L. (1989). 「ハミルトン、ロドリゲス、そして四元数スキャンダル」『数学雑誌』、62 (5): 306. doi :10.2307/2689481. JSTOR  2689481
  15. ^ サイモン・L・アルトマン (1986)回転、四元数、そして二重群、ドーバー出版(特に第12章を参照)
  16. ^ abc Sommer, H. (2018)、「反転した四元数乗算を避ける理由と方法」、Aerospace5 (3): 72、arXiv : 1801.07478Bibcode :2018Aeros...5...72S、doi : 10.3390/aerospace5030072ISSN  2226-4310
  17. ^ Shuster, MD (1993)、「姿勢表現の調査」、Journal of the Astronautical Sciences41 (4): 439– 517、Bibcode :1993JAnSc..41..439S、ISSN  0021-9142
  18. ^ 「MATLAB Aerospace Toolbox quatrotate」
  19. ^ MATLAB Aerospace Toolboxはハミルトン乗算規則を使用していますが、*能動的な*回転ではなく*受動的な*回転を適用するため、リストされている四元数は実際にはシュスター規則を使用した能動的な回転です。[18]
  20. ^ Alan WattとMark Watt (1992)『Advanced Animation and Rendering Techniques: Theory and Practice』 ACM Press ISBN 978-0201544121
  21. ^ Bar-Itzhack, Itzhack Y. (2000年11月~12月)、「回転行列から四元数を抽出するための新しい方法」、Journal of Guidance, Control and Dynamics23 (6): 1085– 1087、Bibcode :2000JGCD...23.1085B、doi :10.2514/2.4654、ISSN  0731-5090
  22. ^ Eberly, D., 回転表現とパフォーマンスの問題
  23. ^ "Bitbucket". bitbucket.org . 2015年11月17日にオリジナルからアーカイブ。 2015年11月14日閲覧

参考文献

  • Grubin, Carl (1970). 「オイラー軸と角度による四元数スキームの導出」. Journal of Spacecraft and Rockets . 7 (10): 1261– 1263. Bibcode :1970JSpRo...7.1261G. doi :10.2514/3.30149
  • バティ=プラット、EP;レイシー、TJ (1980).「基本粒子の幾何学的モデル」.国際理論物理学ジャーナル.19 (6): 437–475 .書誌コード:1980IJTP...19..437B. doi :10.1007/BF00671608. S2CID  120642923
  • Arribas, M.; Elipe, A.; Palacios, M. (2006). 「クォータニオンと剛体の回転」. Celest. Mech. Dyn. Astron . 96 ( 3–4 ): 239– 251. Bibcode :2006CeMDA..96..239A. doi :10.1007/s10569-006-9037-6. S2CID  123591599.
  • Shoemake, Ken. 「クォータニオン」(PDF) 。 2020年5月3日にオリジナルからアーカイブ(PDF) 。
  • 「75以上のコンピュータ言語におけるシンプルなクォータニオン型と演算」。Rosettaコードについて
  • Hart, John C. 「クォータニオンデモンストレーター」
  • ダム、エイク・B.;コッホ、マーティン;リルホルム、マーティン (1998).「四元数、補間、そしてアニメーション」(PDF) .
  • レアンドラ、ヴィッチ (2001).「3次元空間における四元数と回転:代数とその幾何学的解釈」(PDF) .
  • Howell, Thomas; Lafon, Jean-Claude (1975). 「四元数積の計算量、TR75-245」(PDF) . コーネル大学.
  • Horn, Berthold KP (2001). 「単位四元数と回転に関するいくつかの注釈」(PDF) .
  • Lee, Byung-Uk (1991). 回転の単位四元数表現 - 付録A、四元数による微分 - 付録B (PDF) (博士論文). スタンフォード大学.
  • Vance, Rod. 「連結リー群のいくつかの例」. 2018年12月15日時点のオリジナルからのアーカイブ.
  • 「四元数回転の視覚的表現」.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Quaternions_and_spatial_rotation&oldid=1318439832"