「クォータニオン」の版間の差分

提供:ペチラボ書庫
ナビゲーションに移動 検索に移動
129行目: 129行目:


== 回転 ==
== 回転 ==
そのうち書きたい
あらためて、


クォータニオンの積と内積・外積など
<math>
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>


z軸まわりの回転
において、ベクトル <math>\boldsymbol{p}</math> の大きさは両辺のスカラー倍の違いだけなので簡単のため<math>||p||=1</math>とする。


任意軸周りの回転
ベクトル三重積をもう少し砕くと、


<math>
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>||qpq^*||=||p||</math>が必要である。
地道に計算する。<math>\boldsymbol{x}</math> と <math>\boldsymbol{p}</math>がなす角を <math>\phi</math> とする。
<math>
\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>a^2 + ||\boldsymbol{x}||^2 = 1</math>
としたい。
原点中心、半径1の円であるから、
<math>
a = \cos \frac{\theta}{2}
</math>
<math>
||x|| = \sin \frac{\theta}{2}
</math>
は条件を満たす。(角度を <math>\frac{\theta}{2}</math> にしてあるのはあとで都合が良いから)


[[カテゴリ:数学]]
[[カテゴリ:数学]]

2024年7月15日 (月) 04:13時点における版

四元数。

実数 [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{ \boldsymbol{p} }[/math] の大きさは両辺のスカラー倍の違いだけなので簡単のため[math]\displaystyle{ ||p||=1 }[/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] にしてあるのはあとで都合が良いから)