四元数で回転を表す仕組み

TECH徒然 (ITや数学のトピック) TECH徒然

はじめに

3Dの回転を計算機で扱う手法は幾つかありますが,CG分野などでは四元数(クォータニオン,Quaternion)が好まれるようです.今回はその仕組みを見てみます.

次の予備知識を仮定します.

  • 四元数 (四則演算,共役,ノルム)
  • 線形代数 (内積・外積,直交変換) ←煩雑な計算を不要にするツール!

四元数による3D回転の表現

単位四元数 \(q \in \{ q’ \in \mathbb{H}: |q’|=1 \}\) に対し,変換 \(R_q: \mathbb{H} \rightarrow \mathbb{H}\) を下記で定義します. \[ R_q(x) \;:=\; q x \bar{q} \] これが単位四元数 \(q\) で決まる回転です. もう少し正確には,\(R_q\) の引数を純虚四元数 \(x \in \mathrm{Im}~\mathbb{H}\) に制限したものが \(\mathrm{Im}~\mathbb{H}\) の回転変換になるというのです.

なぜこれが3D回転か?

まずは定性的な考察だけで行ってみます.なお結論は次の4節でも確認するので,この節は飛ばしても支障ありません.

以下,四元数 \(q = t + xi +yj + zk \in \mathbb{H}\) と4Dベクトル \([t, x, y, z]^T \in \mathbb{R}^4\) とを適宜同一視して議論します. たとえば「\(\mathbb{H}\) の直交変換」と言えば「\(\mathbb{R}^4\) の標準内積を保つとな」etc. すると

  1. \(R_q\) は \(\mathbb{H}\) の直交変換です.なぜならノルムを保ちます(\(|R_q (x)| \equiv |x|\)).
  2. \(R_q\) は \(\mathrm{Im}~\mathbb{H}\) の直交変換です.なぜなら \(R_q\) は実軸を保ち(\(R_q (1)=1\)), したがってその直交補空間も保ちます(\(R_q (\mathrm{Im}~\mathbb{H}) = \mathrm{Im}~\mathbb{H}\)).
  3. \(R_q\) は \(\mathrm{Im}~\mathbb{H}\) の回転です.なぜなら \(R_q\)は向きを保ちます. ※後述
  4. \(R_q\) の回転軸は \(\mathrm{Im}~q\) です.なぜなら \(q,\bar{q}\) と \(\mathrm{Im}~q\) とは可換(\(R_q (\mathrm{Im}~q) = \mathrm{Im}~q\)).

というわけで,計算せずに「\(R_q\) は \(\mathrm{Im}~q\)を軸とする \(\mathrm{Im}~\mathbb{H}\) の回転だ」とわかりました.

※の証明.線形代数に加え,位相空間論の知識を少しだけ使います(下記3点め).

  • 「実正規変換の標準形」あたりで習うように,直交変換のバリエーションは2D回転と鏡映の組合せしかありません.ここは重要ポイント,ご存知ない方は要チェック!
  • 向きを保つか否か(=回転のみか鏡映含むか)に応じ, 行列式は+1か-1です.
  • \(\mathbb{H}\) の単位球面 (\(\ni 1, q\)) が連結なのと \(R_1\) が恒等変換なのとで,\(\det R_q = \det R_1 = +1\).
  • 以上から \(R_q\) は回転です.ただし鏡映2個は180度回転1個にカウント.

回転角は幾らか?

見通しの良い積の計算式を用意し,それを使って \(R_q\) の変換性を調べます.

\(\mathbb{H}\) の基底 \(i, j, k\) の関係 \(i^2 = j^2 = k^2 = -1\),\(ij=k, jk=i, ki=j\) は,3Dの正規直交系の内積・外積と何やら似ています. 実際,\(q = t + xi + yj + kj \in \mathbb{H}\) を仮に \(q = [t:v]\),ただし \(v:=[x,y,z]^T \in \mathbb{R}^3\),のように表記すると, 純虚四元数の積は次の形に書けることがわかります.\(v \cdot v’\),\(v \times v’\) は3Dベクトルの内積,外積.

\[ [0:v] \cdot [0:v’] \;=\; [-v \cdot v’ : v \times v’] \]

とくに,\(u,v,w \in \mathbb{R}^3\) を任意の正規直交右手系 (\(|u| = |v| = |w| = 1\),\(u \times v = w\),etc.) とすると, 対応する単位純虚四元数 \(U:=[0:u]\),\(V:=[0:v]\),\(W:=[0:w]\) の積は次式となります. \(i, j, k\) とそっくり同じ.

\[ U^2 = V^2 = W^2 = -1 \] \[ UV = W,\; VW=U,\; WU=V \]

さて \(R_q\) です. \(q = \cos \phi + U \sin \phi\) の形なら,上式から

\[ \begin{eqnarray} R_q(U) &=& (\cos\phi + U \sin\phi) \cdot U \cdot (\cos\phi – U \sin\phi) \\ &=& (\cos^2\phi + \sin^2\phi) \cdot U \\ &=& U \\ R_q(V) &=& (\cos\phi + U \sin\phi) \cdot V \cdot (\cos\phi – U \sin\phi) \\ &=& (\cos^2 \phi -\sin^2 \phi) \cdot V + 2 \sin\phi \cos\phi \cdot W \\ &=& \cos(2\phi) \cdot V + \sin(2\phi) \cdot W \end{eqnarray} \]

などとなり,\(R_q\) は確かに \(U\) を軸とする \(\mathrm{Im}~\mathbb{H}\) の回転であって,その回転角は \(2 \phi\) とわかります.\(\theta := 2 \phi\) としてまとめておきましょう.\(U\) は単位純虚四元数ですので為念.

\[q = \cos \frac{\theta}{2} + U \sin \frac{\theta}{2} \;\Rightarrow\; R_q の回転軸は U,回転角は \theta \]

その他補足

  • $R_q$ は,$\mathbb{H}$ への $q$ の左作用 ($x \mapsto qx$) と $\bar{q}$ の右作用 ($x \mapsto x \bar{q}$) の合成として,以下のようにも理解できます.確認は前節と同じ要領で.
    • $( q の左作用) ~=~ (\langle V,W \rangle 平面内 \frac{\theta}{2} 回転) ~\oplus~ (\langle 1,U \rangle 平面内 \frac{\theta}{2} 回転)$
    • $(\bar{q} の右作用) ~=~ (\langle V,W \rangle 平面内 \frac{\theta}{2} 回転) ~\oplus~ (\langle 1,U \rangle 平面内 -\frac{\theta}{2} 回転)$
    • 合わせると $\langle 1,U \rangle$ 平面内の回転は相殺し,$R_q ~=~ (\langle V,W \rangle 平面内 \theta 回転)$
  • 四元数での回転計算は,回転行列でのそれと比べ,一長一短あります.
    • データ量は有利 (4成分 vs 9成分),計算量は不利 (2回転 vs 1回転).
    • 姿勢の補間計算のたぐいは極めて容易.いわゆる球面線形補間.
  • 数学的な興味としては例えば
    • $i, j, k$ とパウリ行列との対応づけにより,$\mathbb{H}$ の単位球面 $\mathrm{S}^3$ と特殊ユニタリ群 $\mathrm{SU}(2)$ とが位相群として同型に.
    • $\mathrm{S}^3 \ni q \mapsto R_q \in \mathrm{SO}(3)$ は特殊直交群 $\mathrm{SO}(3)$ の普遍被覆

Accutheraでは加速器・医療システム・機械学習・放射線シミュレーションなどの専門技術を軸に開発やコンサルティングを承っております。お困りの案件がございましたら、こちら からお気軽にお問合せください。

タイトルとURLをコピーしました