クォータニオン
四元数。
実数 [math]\displaystyle{ a,b,c,d }[/math] と虚数単位 [math]\displaystyle{ i,j,k }[/math] を用いて [math]\displaystyle{ a + bi + cj + dk }[/math] と表される。
ただし、[math]\displaystyle{ i^2=j^2=k^2=ijk=-1 }[/math] である。
積について非可換であることに注意する。
共役
[math]\displaystyle{ q = a + bi + cj + dk }[/math] に対し [math]\displaystyle{ q^* = a - bi - cj - dk }[/math] を考える。
すると、
[math]\displaystyle{ qq^*=q^*q=a^2+b^2+c^2+d^2 }[/math]
となる。
特に、[math]\displaystyle{ ||q||=1 }[/math] のとき、[math]\displaystyle{ q^{-1}=q^* }[/math] である。
3次元ベクトルによる表現
[math]\displaystyle{ \boldsymbol{x}=\begin{bmatrix} x \\ y \\ z \end{bmatrix}, \boldsymbol{i}=\begin{bmatrix} i \\ j \\ k \end{bmatrix} }[/math] のようにすれば、 [math]\displaystyle{ q = a + \boldsymbol{x} \cdot \boldsymbol{i} }[/math] と表示できる。
[math]\displaystyle{ a }[/math] をスカラー部、 [math]\displaystyle{ \boldsymbol{x} }[/math] をベクトル部と呼ぶ。
[math]\displaystyle{ q_1 = a_1 + \boldsymbol{x}_1 \cdot \boldsymbol{i} ,~ q_2 = a_2 + \boldsymbol{x}_2 \cdot \boldsymbol{i} }[/math]
として、積を計算すると、
[math]\displaystyle{ q_1 q_2 = a_1 a_2 - \boldsymbol{x}_1 \cdot \boldsymbol{x}_2 + (a_1 \boldsymbol{x}_2 + a_2 \boldsymbol{x}_1 + \boldsymbol{x}_1 \times \boldsymbol{x}_2) \cdot \boldsymbol{i} }[/math]
と、結構綺麗に書ける。
ここでさらに、
[math]\displaystyle{ q_1 = a_1 + \boldsymbol{x}_1 \cdot \boldsymbol{i} ,~ q_2 = a_2 + \boldsymbol{x}_2 \cdot \boldsymbol{i} ,~ q_3 = a_3 + \boldsymbol{x}_3 \cdot \boldsymbol{i} }[/math]
として3つの積を考える。上記に当てはめて計算して若干整理すると、
[math]\displaystyle{ q_1 q_2 q_3 = a_1 a_2 a_3 - a_1(\boldsymbol{x}_2 \cdot \boldsymbol{x}_3) - a_2(\boldsymbol{x}_3 \cdot \boldsymbol{x}_1) - a_3(\boldsymbol{x}_1 \cdot \boldsymbol{x}_2) - (\boldsymbol{x}_1 \times \boldsymbol{x}_2) \cdot \boldsymbol{x}_3 + \{ a_2 a_3 \boldsymbol{x}_1 + a_3 a_1 \boldsymbol{x}_2 + a_1 a_2 \boldsymbol{x}_3 -(\boldsymbol{x}_1 \cdot \boldsymbol{x}_2) \boldsymbol{x}_3 + a_1 (\boldsymbol{x}_2 \times \boldsymbol{x}_3) + a_2 (\boldsymbol{x}_1 \times \boldsymbol{x}_3) + a_3 (\boldsymbol{x}_1 \times \boldsymbol{x}_2) + (\boldsymbol{x}_1 \times \boldsymbol{x}_2) \times \boldsymbol{x}_3 \}\cdot \boldsymbol{i} }[/math]
整っているようだけど結構大変なことになってきた。合ってるんだろうか。
ここからちょっと天下り的になりながら、三次元ベクトルの回転に対応させていく。
[math]\displaystyle{ q_2 = p = \boldsymbol{p} \cdot \boldsymbol{i} }[/math] とする。 つまり、[math]\displaystyle{ a_2 = 0,~ \boldsymbol{x}_2 = \boldsymbol{p} }[/math] である。
[math]\displaystyle{ q_1 p q_3 = - a_1(\boldsymbol{p} \cdot \boldsymbol{x}_3) - a_3(\boldsymbol{x}_1 \cdot \boldsymbol{p}) - (\boldsymbol{x}_1 \times \boldsymbol{p}) \cdot \boldsymbol{x}_3 + \{ a_3 a_1 \boldsymbol{p} -(\boldsymbol{x}_1 \cdot \boldsymbol{p}) \boldsymbol{x}_3 + a_1 (\boldsymbol{p} \times \boldsymbol{x}_3) + a_3 (\boldsymbol{x}_1 \times \boldsymbol{p}) + (\boldsymbol{x}_1 \times \boldsymbol{p}) \times \boldsymbol{x}_3 \}\cdot \boldsymbol{i} }[/math]
第1項と第2項を消したいことを考えると、[math]\displaystyle{ a_1 = a_3,~ \boldsymbol{x}_1 = -\boldsymbol{x}_3 }[/math]であるとよさそうである。
そのとき、 [math]\displaystyle{ \boldsymbol{x}_1 \times \boldsymbol{x}_2 }[/math] というのは [math]\displaystyle{ \boldsymbol{x}_1 }[/math] や [math]\displaystyle{ \boldsymbol{x}_2 }[/math] に垂直なベクトルであるから、 ちょうど[math]\displaystyle{ (\boldsymbol{x}_1 \times \boldsymbol{x}_2) \cdot \boldsymbol{x}_3 }[/math] も0になってくれる。
そのようなクォータニオンの組は共役である。
[math]\displaystyle{ q_1 = q = a + \boldsymbol{x} \cdot \boldsymbol{i} }[/math]として、[math]\displaystyle{ q_3 = q^* = a - \boldsymbol{x} \cdot \boldsymbol{i} }[/math]とする。
[math]\displaystyle{ q p q^* = \{ a^2 \boldsymbol{p} +(\boldsymbol{x} \cdot \boldsymbol{p}) \boldsymbol{x} + 2a (\boldsymbol{x} \times \boldsymbol{p}) - (\boldsymbol{x} \times \boldsymbol{p}) \times \boldsymbol{x} \}\cdot \boldsymbol{i} }[/math]
こうして三次元ベクトル [math]\displaystyle{ \boldsymbol{p} }[/math] を別のベクトルに移す変換が得られた。
回転
あらためて、
[math]\displaystyle{ q p q^* = \{ a^2 \boldsymbol{p} +(\boldsymbol{x} \cdot \boldsymbol{p}) \boldsymbol{x} + 2a (\boldsymbol{x} \times \boldsymbol{p}) - (\boldsymbol{x} \times \boldsymbol{p}) \times \boldsymbol{x} \}\cdot \boldsymbol{i} }[/math]
において、ベクトル三重積をもう少し砕くと、
[math]\displaystyle{ q p q^* = \{ (a^2 - ||\boldsymbol{x}||^2) \boldsymbol{p} +2(\boldsymbol{x} \cdot \boldsymbol{p}) \boldsymbol{x} + 2a (\boldsymbol{x} \times \boldsymbol{p}) \}\cdot \boldsymbol{i} }[/math]
この変換が回転になるためには、[math]\displaystyle{ ||qpq^*||=||p|| }[/math]が必要である。
地道に計算する。[math]\displaystyle{ \boldsymbol{x} }[/math] と [math]\displaystyle{ \boldsymbol{p} }[/math]がなす角を [math]\displaystyle{ \phi }[/math] とする。
[math]\displaystyle{ \begin{eqnarray} ||qpq^*||^2 &=& (a^2-||\boldsymbol{x}||^2)^2||\boldsymbol{p}||^2 + 4a^2 ||\boldsymbol{x} \times \boldsymbol{p}||^2 +4a^2(\boldsymbol{x} \cdot \boldsymbol{p})^2 + 8a (\boldsymbol{x} \cdot \boldsymbol{p})\boldsymbol{x} \cdot (\boldsymbol{x} \times \boldsymbol{p}) +4a(a^2 - ||\boldsymbol{x}||^2)\boldsymbol{p} \cdot (\boldsymbol{x} \times \boldsymbol{p}) \\ &=& (a^2-||\boldsymbol{x}||^2)^2||\boldsymbol{p}||^2 + 4a^2 ||\boldsymbol{x}||^2||\boldsymbol{p}||^2 \sin^2\phi +4a^2||\boldsymbol{x}||^2||\boldsymbol{p}||^2 \cos^2\phi \\ &=& (a^2 + ||\boldsymbol{x}||^2)^2 ||\boldsymbol{p}||^2 \end{eqnarray} }[/math]
したがって、
[math]\displaystyle{ a^2 + ||\boldsymbol{x}||^2 = 1 }[/math]
としたい。 原点中心、半径1の円であるから、
[math]\displaystyle{ a = \cos \frac{\theta}{2} }[/math]
[math]\displaystyle{ ||x|| = \sin \frac{\theta}{2} }[/math]
は条件を満たす。(角度を [math]\displaystyle{ \frac{\theta}{2} }[/math] にしてあるのはあとで都合が良いから)
[math]\displaystyle{ \boldsymbol{x} = \sin{\frac{\theta}{2}} \boldsymbol{n} }[/math] とする。[math]\displaystyle{ (||\boldsymbol{n}|| = 1) }[/math]
また、簡単のため [math]\displaystyle{ ||p||=1 }[/math] とする。
この条件のもとで、[math]\displaystyle{ qpq^* }[/math] が表すベクトルは
[math]\displaystyle{ \begin{eqnarray} && (a^2 - ||\boldsymbol{x}||^2) \boldsymbol{p} +2(\boldsymbol{x} \cdot \boldsymbol{p}) \boldsymbol{x} + 2a (\boldsymbol{x} \times \boldsymbol{p}) \\ &=& \left(\cos^2{\frac{\theta}{2}} - \sin^2{\frac{\theta}{2}} \right) \boldsymbol{p} + \left( 2 \sin^2{\frac{\theta}{2}} \right) (\boldsymbol{n} \cdot \boldsymbol{p}) \boldsymbol{n} + \left( 2\sin{\frac{\theta}{2}}\cos{\frac{\theta}{2}} \right) \boldsymbol{n} \times \boldsymbol{p} \\ &=& \left(\cos\theta \right) \boldsymbol{p} + (1-\cos\theta) (\boldsymbol{n} \cdot \boldsymbol{p}) \boldsymbol{n} + \left( \sin\theta \right) \boldsymbol{n} \times \boldsymbol{p} \end{eqnarray} }[/math]