オイラー角

 このページはオイラー角を動く図を使って説明したものです。
webGLという3Dのライブラリが動かないブラウザ環境では遅くなる場合があります。できるかぎり、webGLの使える環境で動かしてください。

 剛体の運動を考えるとき、剛体が今どのような位置関係を持っているかを3つの角度を使って表現するのが「オイラー角」である。3つの角度を表す記号としてφ、θ、ψを使おう。回転を表現するには座標の基底ベクトルを変える変換と成分を変える変換がある。このページではその二つが切り替えられるようになっている。基底ベクトルの方の変換では、座標軸の向きが変わる。成分の方の変換では、座標は動かずにベクトルの成分が変わっていく。

 ↓の図は、マウスを使って視点の移動/拡大縮小などができます。

 回転させるパラメータがφ、θ、ψであるが、その意味は以下の通りである。

基底の変換の場合

 φは、元々のz軸を軸として角度φの回転を行う。

 これは、${\bf C}=\left(\begin{array}{ccc} \cos \phi&\sin \phi&0\\ -\sin \phi &\cos\phi&0 \\ 0&0 &1 \\ \end{array}\right)$という行列で表現される。上のスライダを動かすことで、φを変えられるので、どのような回転が起こるかを確認しよう。

 次に、今の移動が終わった後のx を軸として二つ目の角度θの回転を行う。

 これは、${\bf B}=\left(\begin{array}{ccc}1 &0 &0 \\0&\cos \theta&\sin \theta\\0 &-\sin \theta &\cos\theta \\\end{array}\right)$という行列で表現される。

 θは、いわば「z軸をどれだけ倒すか」を決める角度である。そしてここで、φが「z軸をどの方向に倒すか」を決める角度であったことがわかる。スライダーを動かしていろいろな値にして、確認しよう。

 最後に、以上二つの回転が終わった後のz軸を軸として角度ψの回転を行う。

 ${\bf A}=\left(\begin{array}{ccc}\cos \psi&\sin \psi&0\\-\sin \psi &\cos\psi&0 \\0&0 &1 \\\end{array}\right)$がそれを表現する行列である。

 三つの操作をまとめると、 \begin{equation} \underbrace{ \left(\begin{array}{ccc} \cos \psi&\sin \psi&0\\ -\sin \psi &\cos\psi&0 \\ 0&0 &1 \\ \end{array}\right)}_{\bf A} \underbrace{ \left(\begin{array}{ccc} 1 &0 &0 \\ 0&\cos \theta&\sin \theta\\ 0 &-\sin \theta &\cos\theta \\ \end{array}\right)}_{\bf B}\underbrace{ \left(\begin{array}{ccc} \cos \phi&\sin \phi&0\\ -\sin \phi &\cos\phi&0 \\ 0&0 &1 \\ \end{array}\right)}_{\bf C} \end{equation} である。この行列によって$\left(\begin{array}{c}\vec{\mathbf e}_X\\ \vec{\mathbf e}_Y \\ \vec{\mathbf e}_Z\end{array}\right)={\bf ABC}\left(\begin{array}{c}\vec{\mathbf e}_x\\ \vec{\mathbf e}_y \\ \vec{\mathbf e}_z\end{array}\right)$のように座標基底ベクトルが変換される。

 ここで、紙飛行機の先端を表す列ベクトルは(たとえば)$\left(\begin{array}{c}1\\0\\0\end{array}\right)$のままで変化しない。基底ベクトルや座標軸が回っていくことで紙飛行機も回っているのである。

 具体的計算結果は以下の通り。 \begin{equation} \left( \begin{array}{ccc} \cos \psi\cos \phi -\sin \psi\cos \theta \sin \phi & \cos \psi \sin \phi+\sin \psi\cos \theta\cos \phi & \sin \psi \sin \theta \\ -\sin \psi\cos \phi-\cos \psi \cos \theta \sin \phi & -\sin \psi \sin \phi+\cos \psi \cos \theta\cos \phi & \cos \psi \sin \theta \\ \sin \theta\sin \phi & -\sin \theta\cos \phi & \cos \theta \\ \end{array} \right) \end{equation}

 ここで描いた回し方は「$z$軸→$x$軸→$z$軸」の順なので、「$zxz$のオイラー角」という言い方をする。これとは順番を変える定義もある。「$z$軸→$y$軸→$z$軸」の順にすると、$\theta,\phi$の意味が極座標の$\theta,\phi$に一致するのでこの順を使うこともある。また、「$x$→$y$→$z$」のように全部違う軸を使う方法もよく使われる。

成分の変換の場合

 上の回転の仕方では基底ベクトルが回ることで座標軸が回っていった。同じ内容を「成分が変わる」ことで表現できる。今度は、紙飛行機の先端を表す列ベクトルは$\left(\begin{array}{c}1\\0\\0\end{array}\right)$からどんどん変わっていく。

 基底の変換と成分の変換は $$ \left(\begin{array}{ccc}A_x&A_y&A_z\end{array}\right)\left(\begin{array}{c}\vec{\mathbf e}_x\\ \vec{\mathbf e}_y \\ \vec{\mathbf e}_z\end{array}\right)\rightarrow \left(\begin{array}{ccc}A_x&A_y&A_z\end{array}\right){\bf R}\left(\begin{array}{c}\vec{\mathbf e}_x\\ \vec{\mathbf e}_y \\ \vec{\mathbf e}_z\end{array}\right) $$ という変換の行列${\bf R}$が左右の$\left(\begin{array}{ccc}A_x&A_y&A_z\end{array}\right)$と$\left(\begin{array}{c}\vec{\mathbf e}_x\\ \vec{\mathbf e}_y \\ \vec{\mathbf e}_z\end{array}\right)$のどちらを変換すると見るかの違いでしかないので、成分に対する変換と見たときは、 $$ \underbrace{ \left(\begin{array}{ccc} \cos \phi&-\sin \phi&0\\ \sin \phi &\cos\phi&0 \\ 0&0 &1 \\ \end{array}\right)}_{\bf C^t} \underbrace{ \left(\begin{array}{ccc} 1 &0 &0 \\ 0&\cos \theta&-\sin \theta\\ 0 &\sin \theta &\cos\theta \\ \end{array}\right)}_{\bf B^t} \underbrace{ \left(\begin{array}{ccc} \cos \psi&-\sin \psi&0\\ \sin \psi &\cos\psi&0 \\ 0&0 &1 \\ \end{array}\right)}_{\bf A^t}\left(\begin{array}{c}A_x\\ A_y \\ A_z\end{array}\right) $$ という変換になる。よって基底の変換との違いは、

の2点である。

 アニメーションをみながら、違い(しかし、最終的な結果は同じであること)を確認しておいて欲しい。

 使い方の簡単な説明は、以下のビデオ。