「数」4.4 四元数と3次元の回転

今回はこの文章の一番の目的である「四元数を用いた3次元回転の表現」についてがテーマです。まずは四元数の積の構造を崩さないような変換がどのような形になるのかを見た上で、それの特別な場合が鏡映変換になることを示します。次に回転を鏡映変換の合成として考える方法を解説します。そしてそれをもとに回転を四元数で表す方法を作ります。

四元数の合同変換

いま四元数の中での変換として次の2つの条件を満たすものを考えます。

  • 線型であること。つまり$f(ax+by)=af(x)+bf(y)$(ここで$a,b$は複素数,$x,y$は四元数)
  • 積について「同型」であること。つまり$f(xy)=f(x)f(y)$

2つ目の条件について少し考えてみましょう。たとえば、四元数を単純に掛けただけの変換を考えると、これは第1の線型性は満たしていますが、掛ける四元数を$n$とおくと(つまり$f(x)=nx$)、
\begin{equation}
f(xy)=nxy
\end{equation}
一方、
\begin{equation}
f(x)f(y) = nx ny
\end{equation}
となり、積についての同型にはなっていません。そこで四元数とそれの逆元になっている四元数で挟んだ変換を考えます。
\begin{equation}
f(x)=nxn^{-1}
\end{equation}
これならば、
\begin{equation}
f(xy) = nxyn^{-1} = nxn^{-1} nyn^{-1} = f(x)f(y)
\end{equation}
となって、同型になります。これが線型性をもつこともすぐに確認できると思います。このような変換を合同変換と呼びます。

いま、あるベクトル$a=(0,\vec{a})$を単位ベクトル$\vec{n}$に相当する純四元数$n=(0,\vec{n})$で合同変換するとどうなるか調べてみましょう。

まず第1段階、
\begin{equation}
a n^{-1} = (0, \vec{a}) \cdot (0,-\vec{n}) = ( \vec{a} \cdot \vec{n}, -\vec{a} \times \vec{n})
\end{equation}
これに左から$n$を乗じれば、
\begin{eqnarray}
n a n^{-1} &=& (0,\vec{n}) \cdot ( \vec{a} \cdot \vec{n}, -\vec{a} \times \vec{n}) \
&=& ( \vec{n} \cdot (\vec{a} \times \vec{n}), (\vec{a} \cdot \vec{n})\vec{n} – \vec{n} \times (\vec{a} \times \vec{n}))
\end{eqnarray}

スカラー部については、$\vec{a} \times \vec{n}$が$\vec{n}$と直交するので$0$になります。

ベクトル部については、ベクトル3重積の公式$\vec{a} \times (\vec{b} \times \vec{c}) = (\vec{c} \cdot \vec{a})\vec{b} – (\vec{a} \cdot \vec{b})\vec{c}$を用いて、
\begin{equation}
\vec{n} \times (\vec{a} \times \vec{n}) = (\vec{n} \cdot \vec{n})\vec{a} – (\vec{n} \cdot \vec{a})\vec{n} = \vec{a} -(\vec{n} \cdot \vec{a})\vec{n}
\end{equation}
より、
\begin{equation}
(\vec{a} \cdot \vec{n})\vec{n} – \vec{n} \times (\vec{a} \times \vec{n} = (\vec{a} \cdot \vec{n})\vec{n} – (\vec{a} -(\vec{n} \cdot \vec{a})\vec{n}) = 2(\vec{n} \cdot \vec{a})\vec{n} – \vec{a}
\end{equation}

これの幾何学的な意味を考えてみましょう。分かりやすいように正負を入れ替えて$\vec{a}-2(\vec{n} \cdot \vec{a})\vec{n}$について考えます。

単位ベクトルとの内積はその方向への射影を表しますから、$(\vec{n} \cdot \vec{a})\vec{n}$はベクトル$\vec{a}$を$\vec{n}$の方向に分解したベクトルになります。よって、$\vec{a}-(\vec{n} \cdot \vec{a})\vec{n}$であれば$\vec{a}$を$\vec{n}$と直交する方向へ分解したベクトルになるはずです。いま考えているベクトルはさらにもう一つ$(\vec{n} \cdot \vec{a})\vec{n}$を引いたものですから、これは$\vec{n}$と垂直な平面での「鏡映変換」になっています(図参照)。

各ベクトルの関係

つまり、純虚四元数での合同変換は鏡映変換を表すということが分かりました。

ただし、途中で正負を入れ替えていますから、$-nan^{-1}$となっていることに注意してください。

鏡映変換と回転

この節では幾何学的な考察を少し加えます。

異なる二つの平面による鏡映変換を合成することを考えます。

2つの胸像変換の合成は回転になる

図を参照していただきたいのですが、二つの平面$m,n$があって、それぞれの法線ベクトルを$\vec{m},\vec{n}$とします(図では法線ベクトルは省略しています)。このとき、2つの平面のなす角(それはそれぞれの平面の法線がなす角でもある)を$\theta$とおきます。

元のベクトル$\vec{a}$が最初の平面$n$となす角を$\alpha$とおくと、2つ目の平面$m$とベクトル$\vec{a}’$がなす角は$\theta+\alpha$です。よって、$\vec{a}"$と平面$m$の角も同じく$\theta+\alpha$です。また、平面$m$と元のベクトル$\vec{a}$のなす角は$\theta-\alpha$です。よって、$\vec{a})と(\vec{a}"$がなす角は$(\theta+\alpha)+(\theta-\alpha)=2\theta$になるわけです。

このことを四元数で表現してみましょう。

鏡映変換は合同変換によって表されたので、その合成は、
\begin{equation}
-m(-n a n^{-1}) m^{-1} = (mn) a (mn)^{-1}
\end{equation}
です。鏡映変換にするために付けたマイナス符号ですが、合成することで消えてしまいます。次にこの四元数$mn$を求め、それの意味するところを考えましょう。

これは、$m=(0,\vec{m}),n=(0,\vec{n})$とおけば、$mn=(-\vec{n} \cdot \vec{m}, \vec{m} \times \vec{n})$ですから、先の$\theta$を用いて$mn=-(\cos \theta, \vec{l} \sin \theta )$と書けます。ここで$\vec{l}=\vec{n} \times \vec{m}$は$\vec{m}$と$\vec{n}$に直交する方向の単位ベクトルで、回転軸方向を表すベクトルです。符号と外積の順番に注意が必要です。マイナスが付きますが、合同変換の式にいれるとマイナスが2つになってキャンセルするので、負号の存在は変換の結果に影響を与えません。これが$2\theta$の回転を表すわけですから、$\theta$の回転をさせたい場合は、
\begin{equation}
r = ( \co, \vec{l} \so )\label{ex12r}
\end{equation}
を用いて合同変換$rar^{-1}$を施せばよいということになります。

実際に回転になっているか確かめる

前節までの「鏡映変換の合成としての回転」は、式(\ref{ex12r})を用いた合同変換というのを天下り的に提示することに抵抗があってその導出のようなことをやってみたわけですが、直接これが回転を表していることを示しましょう。

\begin{eqnarray}
ar^{-1} &=& (0, \vec{a}) \cdot (\co, -\vec{l} \so) \\
&=& (\vec{a} \cdot \vec{l} \so, \vec{a} \co – \vec{a} \times \vec{l} \so ) \\
r ar^{-1} &=& (\co, \vec{l} \so) \cdot (\vec{a} \cdot \vec{l} \so, \vec{a} \co – \vec{a} \times \vec{l} \so ) \\
&=& (\vec{a} \cdot \vec{l} \so \co -\vec{l} \so \cdot (\vec{a} \co – \vec{a} \times \vec{l} \so), \\
& & \vec{a} \cc – \vec{a} \times \vec{l} \so \co + \vec{l} \so \times (\vec{a} \co – \vec{a} \times \vec{l} \so))
\end{eqnarray}
ここでスカラー部だけ計算すると、
\begin{eqnarray}
& & \vec{a} \cdot \vec{l} \so \co -\vec{l} \so \cdot (\vec{a} \co – \vec{a} \times \vec{l} \so) \\
&=& \vec{a} \cdot \vec{l} \so \co -\vec{l} \cdot \vec{a} \co \so – \vec{l} \cdot (\vec{a} \times \vec{l}) \ss \\
&=& 0
\end{eqnarray}
ここで第3項は直交するベクトルの内積により0になることを用いています。

次にベクトル部を計算しましょう。
\begin{eqnarray}
& &\vec{a} \cc – \vec{a} \times \vec{l} \so \co + \vec{l} \so \times (\vec{a} \co – \vec{a} \times \vec{l} \so) \label{ex12v1} \\
&=& \vec{a} \cc – \vec{a} \times \vec{l} \so \co + \vec{l} \times \vec{a} \so \co – \vec{l} \times(\vec{a} \times \vec{l}) \ss \label{ex12v2} \\
&=& \vec{a} \cc +2\vec{l} \times \vec{a} \so \co -(\vec{a}-(\vec{l} \cdot \vec{a})\vec{l}) \ss \label{ex12v3}\\
&=& \vec{a} (\cc-\ss) +2\vec{l} \times \vec{a} \so \co + (\vec{l} \cdot \vec{a})\vec{l}) \ss \label{ex12v4}\\
&=& \vec{a} \cos \theta +\vec{l} \times \vec{a} \sin \theta + (\vec{l} \cdot \vec{a})\vec{l} (1-\cos \theta) \label{ex12v5} \\
&=& (\vec{l} \cdot \vec{a})\vec{l} + (\vec{a}-(\vec{l} \cdot \vec{a})\vec{l})\cos \theta +\vec{l} \times \vec{a} \sin \theta \label{ex12v6}
\end{eqnarray}
ここで式(\ref{ex12v3})ではベクトル3重積の公式を用いています。また、式(\ref{ex12v5})への変形では倍角公式・半角公式を用い、式(\ref{ex12v6})では三角関数で式をまとめなおしています。

さて、この最後の式がベクトルの回転を表していることを確認してみましょう。以下、簡略化のために、それぞれのベクトルに、
\begin{eqnarray}
\vec{x} &=& \vec{a}-(\vec{l} \cdot \vec{a})\vec{l} \\
\vec{y} &=& \vec{l} \times \vec{a} \\
\vec{z} &=& (\vec{l} \cdot \vec{a})\vec{l}
\end{eqnarray}
と名前を付けておくことにします。まずベクトル$\vec{z}$は、内積の性質からベクトル$\vec{a}$のベクトル$\vec{l}$方向への射影になっています。よって、ベクトル$\vec{x}$はベクトル$\vec{a}$からベクトル$\vec{z}$を引いたものですから、ベクトル$\vec{a}$のうちベクトル$\vec{l}$に直交する成分を表しています。また、外積の性質$\vec{l} \times \vec{l}=0$より、
\begin{equation}
\vec{l} \times \vec{x} = \vec{l} \times (\vec{a}-(\vec{l} \cdot \vec{a})\vec{l}) = \vec{l} \times \vec{a} = \vec{y}
\end{equation}
となり、ベクトル$\vec{y}$はベクトル$\vec{x}$をベクトル$\vec{l}$を中心に90度回転させたベクトルということになります。結局、この3つのベクトルは互いに直交する3つのベクトルになります。よって、式(\ref{ex12v6})の最後の2項は、$\vec{x}\cos \theta + \vec{y} \sin \theta$であり、直交する部分だけ回転したものになっていることが分かります。

以上の計算により、実際に合同変換$rar^{-1}$がベクトルの回転を表していることを確認できました。

まとめ

今回の計算はベクトルの内積・外積の性質を何度も使う大変なものでしたが、ベクトルの幾何学的イメージをできる限り残して議論することに力点をおきました。式(\ref{ex12r})のような四元数がどこからくるのか、それが実際にどうやって回転を生み出すのか、ということをみることができたと思います。