空間内の四元数と回転 – 定義

導入

単位四元数は、3 次元オブジェクトの向きと回転を表す便利な数学的表記法を提供します。オイラー角と比べて、構成が簡単で、ジンバルのブロッキングの問題を回避できます。回転行列と比較して、数値的に安定しており、より効率的です。クォータニオンは、コンピュータ グラフィックス、ロボット工学、ナビゲーション分子動力学衛星宇宙力学などのアプリケーションに採用されています。

クォータニオンを使用した回転操作

このセクションで使用されるプロパティの非常に厳密な説明は、Altmann によって提供されています

回転の超球面

回転空間のアイデアを得る

単位四元数は、比較的単純な方法で 3次元の回転の数学的空間を表します。まず回転空間そのものについて直感的に理解することで、回転と四元数の対応を理解することができます。

回転空間内の異なる角度と異なる軸の 2 つの回転。ベクトルノルムは回転の振幅に関係します。

3 次元での各回転には、特定の軸を中心とした特定の角度の回転が含まれます。角度が 0 の場合、軸は重要ではないため、 0度の回転は回転空間内の単純なになります (これが恒等回転です)。角度が小さいがゼロではない場合、可能な回転のセットは回転アイデンティティを囲む小さなであり、球の各点は特定の方向を指す軸を表します (天球と比較してください)。より大きな角度の回転は徐々に恒等回転から遠ざかり、半径が増加する同心球として想像できます。したがって、恒等回転の近傍では、回転の抽象空間は通常の 3 次元空間に似ています (異なる半径の球で囲まれた中心点として見ることもできます。回転角度が 180° を超えると、類似はそこで終了します)。 、異なる軸に沿った回転は発散を停止し、再び互いに類似し始め、最終的に角度が 360° に達すると同一 (同一回転と等しくなります) になります。

水平軸 ( xy平面に含まれる軸) の回転の超球面。

同様の現象が球の表面でも観察されます。北極に立って、そこからいくつかの方向に直線(実際には子午線)を引くと、それらは発散し、南極で再び収束します。北極の周りに描かれた半径が増加する同心円 (平行線) は、極間の距離がカバーされると、最終的には南極の点に崩壊します。私たちは、極からのさまざまな方向 (つまり、さまざまな経線) をさまざまな回転に、そして北極までのさまざまな距離をさまざまな角度に同化することができます。したがって、回転空間の類似性が得られます。ただし、球の表面は 2 次元ですが、回転軸はすでに 3 次元を使用しています。したがって、回転空間は超球、つまり 4 次元の球によってモデル化されます。円が球の一部であるのと同じように、通常の球を超球の一部と考えることができます。たとえば、 xy平面内の軸の回転のみを表すセクションを取得できます (反対の図を参照)。回転角度が北極との緯度の差の2 倍であることがわかります。実際、赤道上の点は 90 度ではなく 180 度の回転を表し、南極は 360 度の回転を表します。 180°の半回転ではありません。

北極と南極は同じ回転を表し、実際、これは互いの対蹠点にある点の任意のペアに当てはまります。点がベクトルによって方向付けられた軸の周りの角度αの回転に対応する場合

$$ {\vec{v}} $$
、他の点は角度回転に対応します。
$$ {360^\circ – \alpha} $$
ベクトルの方向を向いた軸の周り
$$ {- \vec{v}} $$
。実際、回転空間は超球そのものではなく、互いの対蹠点にある点を識別する超球です。しかし、単純化のために、たとえ半分が冗長 (二重カバー) であっても、回転を 4 次元球上の点として考えることができます。

回転スペースを構成する

緯度と経度などの 2 つの座標を使用して球の表面をパラメータ化できます。しかし、北極と南極では、球上の他の点と本質的に変わらないにもかかわらず、緯度と経度の動作が悪くなります (劣化しています)。北極と南極 (緯度 +90° と -90°) では、経度は意味を失います。

2 つのパラメータを持つ座標系はこの縮退を回避できないことがわかります (これはヘアリー ボール定理です)。このような問題は、球を 3 次元空間に埋め込み、3 つの デカルト座標(ここではwxy ) を使用してパラメータ化し、北極を ( w , x , y ) = (1, 0, 0)、南極は ( w , x , y ) = (−1, 0, 0) にあり、赤道は方程式w = 0 およびx 2 + y 2 = 1 の円になります。球上の点は次の条件を満たします。制約w 2 + x 2 + y 2 = 1 なので、座標は 3 つありますが、自由度は常に 2 になります。球の点 ( wxy ) は、ベクトルによって方向付けられた水平軸の周りの通常空間の回転を表します。

$$ {\vec{v}\begin{pmatrix}x\\y\\0\end{pmatrix}} $$
そしてコーナー
$$ {\alpha= 2 \cos^{-1} w = 2 \sin^{-1} \sqrt{x^2 + y^2}} $$

同様に、3 次元空間の回転空間を記述する超球は 3 つの角度 (オイラー角) を使用してパラメータ化できますが、このタイプのパラメータ化は超球の特定の点で縮退し、次の問題が発生します。ジンバルのブロック。これは、4 つのユークリッド座標wxyz ( w 2 + x 2 + y 2 + z 2 = 1) を使用することで回避できます。座標点 ( wxyz ) は、軸の周りの回転を表します。ベクトルによって導かれる

$$ {\vec{v}\begin{pmatrix}x\\y\\z\end{pmatrix}} $$
そしてコーナー
$$ {\alpha = 2 \cos^{-1} w = 2 \sin^{-1} \sqrt{x^2+y^2+z^2}.} $$

回転から四元数へ

クォータニオンの概要

代数の通常の規則に準拠し、さらに規則i 2 = −1 に従う抽象記号i を導入することによって、複素数を定義できます。これは、複素数を計算するためのすべてのルールを再現するには十分です。たとえば、

$$ {(a + b \mathbf{i}) (c + d \mathbf{i}) = a c + a d \mathbf{i} + b \mathbf{i} c + b \mathbf{i} d \mathbf{i} = a c + a d \mathbf{i} + b c \mathbf{i} + b d \mathbf{i}^2 = (a c – b d) + (b c + a d) \mathbf{i}} $$

同様に、四元数は、規則i 2 = j 2 = k 2 = ijk = −1 と、乗算の可換性を除く通常の代数規則を満たす抽象記号ijk を導入することによって定義できます (よく知られた例です)。非可換乗算は行列乗算です)。すべての計算ルールはこれらの定義から生じます。たとえば、次のように示すことができます

$$ {(a + b\mathbf{i} + c\mathbf{j} + d\mathbf{k}) (e + f\mathbf{i} + g\mathbf{j} + h\mathbf{k}) = (ae – bf – cg – dh) + (af + be + ch – dg) \mathbf{i} + (ag + ce + df – bh) \mathbf{j} + (ah + de + bg – cf) \mathbf{k}} $$

虚数部

$$ {b\mathbf{i} + c\mathbf{j} + d\mathbf{k}} $$
クォータニオンの はベクトルのように動作します
$$ {\vec{v}\begin{pmatrix}b\\c\\d\end{pmatrix}} $$
3 次元ベクトル空間の であり、実数部は次のスカラー持ちます
$$ {\mathbb{R}} $$
。クォータニオンをジオメトリで使用する場合、スカラーとベクトルとして定義すると便利です。
$$ {a + b\mathbf{i} + c\mathbf{j} + d\mathbf{k} = a + \vec{v}} $$

学校でベクトルを勉強した人は、ベクトル数値を加算すること、または 2 つのベクトルを掛け合わせることが奇妙に感じるかもしれません。なぜなら、これらの演算は通常は定義されていないからです。ただし、これが四元数の実部と虚部の単なる表記であることを覚えておくと、より正当なものになります。

クォータニオンの乗算は、ベクトル積とベクトルの内積(実際には最初はクォータニオンからインスピレーションを得たもの) の現代語で表現できます。ルールi 2 = j 2 = k 2 = ijk = −1 の代わりに、2 つのベクトルの乗算のルールがあります。

$$ {\vec{v} \vec{w} = \vec{v} \wedge \vec{w} – \vec{v} \cdot \vec{w}} $$
、 または :

  • $$ {\vec{v} \vec{w}} $$
    ベクトルの乗算です。
  • $$ {\vec{v} \wedge \vec{w}} $$
    はベクトル積 (ベクトル)、
  • $$ {\vec{v} \cdot \vec{w}} $$
    はドット積 (数値) です。

ベクトルの乗算は (外積のため) 可換ではありませんが、スカラー間およびスカラーとベクトルの間の乗算は可換です。これらの規則から直ちに次のことがわかります。

$$ {(s + \vec{v}) (t + \vec{w}) = (s t – \vec{v} \cdot \vec{w}) + (s \vec{w} + t \vec{v} + \vec{v} \wedge \vec{w})} $$

非ゼロ四元数の(左と右) は次のとおりです。

$$ {(s + \vec{v})^{-1} = \frac{s – \vec{v}}{s^2 + |\vec{v}|^2}} $$
、直接計算によって検証できるように。

回転と四元数の関係

前述したように、 ( w , x , y , z ) を回転の座標とします。クォータニオンを定義しましょう。

$$ {q = w + x\mathbf{i} + y\mathbf{j} + z\mathbf{k} = w + \vec{u}\begin{pmatrix}x\\y\\z\end{pmatrix} = \cos (\alpha/2) + \vec{u} \sin (\alpha/2)} $$
または
$$ {\vec{u}} $$
は単位ベクトルです。あるいはまた
$$ {\vec{v}} $$
実座標がゼロの四元数とみなされる、3 次元空間内の通常のベクトル。次に、四元数の積が次のことを示すことができます (次のセクションを参照)。

$$ {q \vec{v} q^{-1}} $$

ベクトルを返します

$$ {\vec{v}} $$
の方向の軸の周りに角度αだけ回転します。
$$ {\vec{u}} $$
。視線が同じ方向を向いている場合、回転は時計回りです。
$$ {\vec{u}} $$
。この演算は、 qによる共役として知られています。

したがって四元数の乗算は回転の合成に対応します。p とq が回転を表す四元数である場合、 pqによる回転 (共役) は次のようになります。

$$ {p q \vec{v} (p q)^{-1} = p q \vec{v} q^{-1} p^{-1} = p (q \vec{v} q^{-1}) p^{-1}} $$

これは、 qで回転 (共役) し、次にpで回転することになります。

回転の逆四元数は逆回転に対応します。

$$ {q^{-1} (q \vec{v} q^{-1}) q = \vec{v}} $$
。クォータニオンの 2 乗は、同じ軸の周りで同じ角度を 2 回回転することに対応します。より一般的には、 q n は、 qと同じ軸の周りの角度のn倍の回転に対応します。これは任意の実数nに拡張でき、空間の回転間で中間回転を流動的に計算できるようになります。これが球面線形補間 ( Slerp ) です。

四元数の共役と空間の回転の等価性の実証

どちらか

$$ {\vec{u}} $$
単位ベクトル (回転軸) と次のいずれか
$$ {q = \cos \frac{\alpha}{2} + \vec{u} \sin \frac{\alpha}{2}} $$
。私たちの目標は、それを示すことです

$$ {\vec{v’} = q \vec{v} q^{-1} = \left( \cos \frac{\alpha}{2} + \vec{u} \sin \frac{\alpha}{2} \right) \, \vec{v} \, \left( \cos \frac{\alpha}{2} – \vec{u} \sin \frac{\alpha}{2} \right)} $$

ベクトルを返します

$$ {\vec{v}} $$
の方向の軸の周りに角度αだけ回転します。
$$ {\vec{u}} $$
。展開すると、次のようになります。

$$ {\begin{array}{lll} \vec{v’} &=& \vec{v} \cos^2 \frac{\alpha}{2} + (\vec{u}\vec{v} – \vec{v}\vec{u}) \sin \frac{\alpha}{2} \cos \frac{\alpha}{2} – \vec{u}\vec{v}\vec{u} \sin^2 \frac{\alpha}{2} \\ &=& \vec{v} \cos^2 \frac{\alpha}{2} + 2 (\vec{u} \wedge \vec{v}) \sin \frac{\alpha}{2} \cos \frac{\alpha}{2} – (\vec{v} (\vec{u} \cdot \vec{u}) – 2 \vec{u} (\vec{u} \cdot \vec{v})) \sin^2 \frac{\alpha}{2} \\ &=& \vec{v} (\cos^2 \frac{\alpha}{2} – \sin^2 \frac{\alpha}{2}) + (\vec{u} \wedge \vec{v}) (2 \sin \frac{\alpha}{2} \cos \frac{\alpha}{2}) + \vec{u} (\vec{u} \cdot \vec{v}) (2 \sin^2 \frac{\alpha}{2}) \\ &=& \vec{v} \cos \alpha + (\vec{u} \wedge \vec{v}) \sin \alpha + \vec{u} (\vec{u} \cdot \vec{v}) (1 – \cos \alpha) \\ &=& (\vec{v} – \vec{u} (\vec{u} \cdot \vec{v})) \cos \alpha + (\vec{u} \wedge \vec{v}) \sin \alpha + \vec{u} (\vec{u} \cdot \vec{v}) \\ &=& \vec{v}_{\bot} \cos \alpha + (\vec{u} \wedge \vec{v}_{\bot}) \sin \alpha + \vec{v}_{\|} \end{array}} $$

または

$$ {\vec{v}_{\bot}} $$
そして
$$ {\vec{v}_{\|}} $$
のコンポーネントです
$$ {\vec{v}} $$
それぞれ直交および同一直線上にある
$$ {\vec{u}} $$
。これは、次の方向の軸の周りの角度αの回転を与えるオリンデ ロドリゲスの公式です。
$$ {\vec{u}} $$

活用によるアクション

最初の対角線を中心に 120 度回転すると、i、j、k が円状に回転します。

の方向の軸の周りの回転f を考えます。

$$ {\vec{v} = \mathbf{i} + \mathbf{j} + \mathbf{k}} $$
角度は 120°、つまり / 3ラジアンです。

$$ {\alpha = \frac{2 \pi}{3}} $$

の基準

$$ {\vec{v}} $$
は√3、半角はπ / 3 (60°)、この半角の余弦1 / 2 、 (cos 60° = 0.5)、その正弦√3 / 2 、 (sin 60 ° ≈) 0.866)。したがって、ユニタリ四元数と共役する必要があります。

$$ {\begin{array}{lll} u &=& \cos\frac{\alpha}{2} + \sin\frac{\alpha}{2}\cdot \frac{1}{\| \vec{v} \| }\vec{v}\\ &=& \cos \frac{\pi}{3} + \sin \frac{\pi}{3}\cdot \frac{1}{\sqrt{3}}\vec{v}\\ &=& \frac{1}{2} + \frac{\sqrt{3}}{2}\cdot \frac{1}{\sqrt{3}}\vec{v}\\ &=& \frac{1}{2} + \frac{\sqrt{3}}{2}\cdot \frac{\mathbf{i} + \mathbf{j} + \mathbf{k}}{\sqrt{3}}\\ &=& \frac{1 + \mathbf{i} + \mathbf{j} + \mathbf{k}}{2} \end{array}} $$

fが回転関数の場合、

$$ {f(a\mathbf{i} + b\mathbf{j} + c\mathbf{k}) = u (a\mathbf{i} + b\mathbf{j} + c\mathbf{k}) u^{-1}} $$

虚数座標の符号を変更するだけで、単位四元数の逆数が得られることを証明できます。それに応じて、

$$ {u^{-1} = \frac{1- \mathbf{i} – \mathbf{j} – \mathbf{k}}{2}} $$

そして

$$ {f(a\mathbf{i} + b\mathbf{j} + c\mathbf{k}) = \frac{1 + \mathbf{i} + \mathbf{j} + \mathbf{k}}{2} (a\mathbf{i} + b\mathbf{j} + c\mathbf{k}) \frac{1 – \mathbf{i} – \mathbf{j} – \mathbf{k}}{2}} $$

クォータニオンを使用した通常の計算規則を適用すると、次のようになります。

$$ {f(a\mathbf{i} + b\mathbf{j} + c\mathbf{k}) = c\mathbf{i} + a\mathbf{j} + b\mathbf{k}} $$

予想のとおり、回転は立方体の頂点の 1 つを持ち、その点を通る最長の対角線に沿って 120 度回転することと同じです。 3 つの軸がどのように円順列を経るかを観察します。

実際のクォータニオン計算

前回の結果を証明してみましょう。 fの式を (2 つのステップで) 作成し、ルールを適用します。

$$ {\begin{alignat}{2} \mathbf{ij} & = \mathbf{k}, & \mathbf{ji} & = \mathbf{-k}, \\ \mathbf{jk} & = \mathbf{i}, & \mathbf{kj} & = \mathbf{-i}, \\ \mathbf{ki} & = \mathbf{j}, & \mathbf{ik} & = \mathbf{-j}, \\ \mathbf{i}^{2} & = \mathbf{j}^{2}& = \mathbf{k}^{2} & = -1 \end{alignat}} $$

以下を取得します。

$$ {\begin{array}{lll} f(a\mathbf{i} + b\mathbf{j} + c\mathbf{k}) &=& \frac{1 + \mathbf{i} + \mathbf{j} + \mathbf{k}}{2} (a\mathbf{i} + b\mathbf{j} + c\mathbf{k}) \frac{1 – \mathbf{i} – \mathbf{j} – \mathbf{k}}{2} \\ && (1 – \mathbf{i} – \mathbf{j} – \mathbf{k})\\ &=& \frac{1}{4} ( (a\mathbf{i} + b\mathbf{j} + c\mathbf{k}) +(- a + b\mathbf{k} – c\mathbf{j}) + (-a\mathbf{k} – b +c\mathbf{i}) + (a\mathbf{j} – b\mathbf{i} – c))\\ && (1 – \mathbf{i} – \mathbf{j} – \mathbf{k})\\ &=& \frac{1}{4} ( (-a – b – c) + (a – b+ c) \mathbf{i} + (a + b – c) \mathbf{j} + (-a + b + c) \mathbf{k})\\ && (1 – \mathbf{i} – \mathbf{j} – \mathbf{k})\\ &=& \frac{1}{4} ( ( (-a – b – c) + (a – b + c) \mathbf{i} + (a + b – c) \mathbf{j} + (-a + b + c) \mathbf{k})\\ &&+ ( (a + b + c) \mathbf{i} + (a – b + c) + (a + b – c) \mathbf{k} + (a – b – c) \mathbf{j})\\ &&+ ( (a + b + c) \mathbf{j} + (-a + b – c) \mathbf{k} + (a + b – c) + (-a + b + c) \mathbf{i})\\ &&+ ( (a + b + c) \mathbf{k} + (a – b + c) \mathbf{j} + (-a – b + c) \mathbf{i} + (-a + b + c))\\ &=& \frac{1}{4} ( ( (-a – b – c) + (a – b + c) + (a + b – c) + (-a + b + c) )\\ &&+ ( (a – b + c) + (a + b + c) + (-a + b + c) + (-a – b + c) ) \mathbf{i}\\ &&+ ( (a + b – c) + (a – b – c) + (a + b + c) + (a – b + c) ) \mathbf{j}\\ &&+ ( (-a + b + c) + (a + b – c) + (-a + b – c) + (a + b + c) ) \mathbf{k})\\ &=& \frac{1}{4} (0 + 4c \mathbf{i} + 4a \mathbf{j} + 4b \mathbf{k})\\ &=&c\mathbf{i} + a\mathbf{j} + b\mathbf{k} \end{array}} $$

これは実際に発表された結果です。このような計算を手作業で行うのは比較的面倒であることがわかりますが、コンピュータープログラムでは、結局のところ、四元数乗算ルーチンを 2 回呼び出すことになります。

  1. Quaternions and spatial rotation – anglais
  2. Cuaterniones y rotación en el espacio – espagnol
  3. קווטרניונים וסיבובים מרחביים – hébreu
  4. Rotazioni spaziali con i quaternioni – italien
  5. 사원수와 회전 – coréen
  6. Кватернионы и вращение пространства – russe

空間内の四元数と回転 – 定義・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。