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

提供:ペチラボ書庫
ナビゲーションに移動 検索に移動
編集の要約なし
 
(同じ利用者による、間の6版が非表示)
6行目: 6行目:


積について非可換であることに注意する。
積について非可換であることに注意する。
== 共役 ==
<math>q = a + bi + cj + dk</math> に対し <math>q^* = a - bi - cj - dk</math> を考える。
すると、
<math>qq^*=q^*q=a^2+b^2+c^2+d^2
</math>
となる。
特に、<math>||q||=1</math> のとき、<math>q^{-1}=q^*
</math> である。


== 3次元ベクトルによる表現 ==
== 3次元ベクトルによる表現 ==
22行目: 36行目:
と表示できる。
と表示できる。


== 共役 ==
<math>a</math> をスカラー部、 <math>\boldsymbol{x}</math> をベクトル部と呼ぶ。
<math>q = a + bi + cj + dk</math> に対し <math>q^* = a - bi - cj - dk</math> を考える。
 
<math>
q_1 = a_1 + \boldsymbol{x}_1 \cdot \boldsymbol{i}
,~
q_2 = a_2 + \boldsymbol{x}_2 \cdot \boldsymbol{i}
</math>
 
として、積を計算すると、
 
<math>
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>
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>
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>q_2 = p = \boldsymbol{p} \cdot \boldsymbol{i}</math> とする。
つまり、<math>a_2 = 0,~ \boldsymbol{x}_2 = \boldsymbol{p}</math> である。


<math>qq^*=q^*q=a^2+b^2+c^2+d^2
<math>
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>
</math>


となる。


特に、<math>||q||=1</math> のとき、<math>q^{-1}=q^*
第1項と第2項を消したいことを考えると、<math>a_1 = a_3,~ \boldsymbol{x}_1 = -\boldsymbol{x}_3</math>であるとよさそうである。
</math> である。
 
そのとき、
<math>\boldsymbol{x}_1 \times \boldsymbol{x}_2</math> というのは <math>\boldsymbol{x}_1</math> や <math>\boldsymbol{x}_2</math> に垂直なベクトルであるから、
ちょうど<math>(\boldsymbol{x}_1 \times \boldsymbol{x}_2) \cdot \boldsymbol{x}_3</math>
も0になってくれる。
 
そのようなクォータニオンの組は共役である。
 
<math>q_1 = q = a + \boldsymbol{x} \cdot \boldsymbol{i}</math>として、<math>q_3 = q^* = a - \boldsymbol{x} \cdot \boldsymbol{i}</math>とする。
 
<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>
 
こうして三次元ベクトル <math>\boldsymbol{p}</math> を別のベクトルに移す変換が得られた。


== 回転 ==
== 回転 ==
そのうち書きたい
あらためて、
 
<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>
 
において、ベクトル三重積をもう少し砕くと、
 
<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> にしてあるのはあとで都合が良いから)
 
<math>\boldsymbol{x} = \sin{\frac{\theta}{2}} \boldsymbol{n}</math> とする。<math>(||\boldsymbol{n}|| = 1)</math>
 
また、簡単のため <math>||p||=1</math> とする。
 
この条件のもとで、<math>qpq^*</math> が表すベクトルは
 
<math>
\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})
 
\\ &=&
(\boldsymbol{n} \cdot \boldsymbol{p}) \boldsymbol{n}
+ (\cos\theta)(\boldsymbol{p} - (\boldsymbol{n} \cdot \boldsymbol{p}) \boldsymbol{n})
+ (\sin\theta) (\boldsymbol{n} \times \boldsymbol{p})
\end{eqnarray}
</math>
 
 
この結果について、
 
* 第1項は<math>\boldsymbol{n}</math>に沿った向きの成分
* 第2項は<math>\boldsymbol{n}から\boldsymbol{p}</math>に向けて垂直に伸ばした軸方向の成分
* 第3項はそれら2軸に垂直な軸方向の成分
と解釈することができる。


クォータニオンの積と内積・外積など
これは <math>\boldsymbol{n}</math> を回転軸として、<math>\boldsymbol{p}</math> を角度 <math>\theta</math> だけ回転させた点に相当する。


z軸まわりの回転


任意軸周りの回転
このように、クォータニオンを掛けることを3次元ベクトルの回転に対応させることができた。


お疲れ様なのらね。


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

2024年7月15日 (月) 05:20時点における最新版

四元数。

実数 [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}) \\ &=& (\boldsymbol{n} \cdot \boldsymbol{p}) \boldsymbol{n} + (\cos\theta)(\boldsymbol{p} - (\boldsymbol{n} \cdot \boldsymbol{p}) \boldsymbol{n}) + (\sin\theta) (\boldsymbol{n} \times \boldsymbol{p}) \end{eqnarray} }[/math]


この結果について、

  • 第1項は[math]\displaystyle{ \boldsymbol{n} }[/math]に沿った向きの成分
  • 第2項は[math]\displaystyle{ \boldsymbol{n}から\boldsymbol{p} }[/math]に向けて垂直に伸ばした軸方向の成分
  • 第3項はそれら2軸に垂直な軸方向の成分

と解釈することができる。

これは [math]\displaystyle{ \boldsymbol{n} }[/math] を回転軸として、[math]\displaystyle{ \boldsymbol{p} }[/math] を角度 [math]\displaystyle{ \theta }[/math] だけ回転させた点に相当する。


このように、クォータニオンを掛けることを3次元ベクトルの回転に対応させることができた。

お疲れ様なのらね。