回転行列に対応するオイラー極と回転角

回転行列が数値などで与えられたとき,対応するオイラー極と回転角を求める式を導きます.これは,例えば複数回の段階回転を1回の全回転で表わしたいときに使用できます.

地球中心を原点とする直交座標は, x と y を赤道上でそれぞれ経度が 0° と 90°E, z を北極の方向へ取ります.求めるオイラー極の緯度と経度を \((\lambda,\phi)\),その方向の単位ベクトルを \({\bf u}\),回転角を \(\theta\) とします.オイラー極の緯度経度は単位ベクトルの成分で次式で表わされます. \begin{eqnarray} \sin\lambda & = & \frac{u_z}{\sqrt{u_x^2+u_y^2+u_z^2}} = u_z, \quad (-90° \leq \lambda \leq 90°) \label{eq01} \\ \tan\phi & = & \frac{u_y}{u_x}. \quad (-180° \leq \phi \leq 180°) \label{eq02} \end{eqnarray} 式 (2) で経度 \(\phi\) を求めるときは逆正接関数の角度の任意性に注意する必要があり,同様の理由からこのページでは回転角 \(\theta\) を次の範囲に限定します. \begin{equation} 0° \leq \theta \leq 180°. \label{eq03} \end{equation}

いま,任意の回転行列 \(A\) を対応する \({\bf u}\) と \(\theta\) で表わすと次の通りです. \begin{eqnarray} A & = & \left(\begin{array}{ccc} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{array}\right), \nonumber \\ & = & \left(\begin{array}{lll} \scriptsize{u_xu_x(1-\cos\theta)+\cos\theta} & \scriptsize{u_xu_y(1-\cos\theta)-u_z\sin\theta} & \scriptsize{u_xu_z(1-\cos\theta)+u_y\sin\theta} \\ \scriptsize{u_yu_x(1-\cos\theta)+u_z\sin\theta} & \scriptsize{u_yu_y(1-\cos\theta)+\cos\theta} & \scriptsize{u_yu_z(1-\cos\theta)-u_x\sin\theta} \\ \scriptsize{u_zu_x(1-\cos\theta)-u_y\sin\theta} & \scriptsize{u_zu_y(1-\cos\theta)+u_x\sin\theta} & \scriptsize{u_zu_z(1-\cos\theta)+\cos\theta} \end{array}\right). \label{eq04} \end{eqnarray} 行列の各成分の対称性を考慮して次式が得られます. \begin{eqnarray} a_{32} - a_{23} & = & 2u_x\sin\theta, \label{eq05} \\ a_{13} - a_{31} & = & 2u_y\sin\theta, \label{eq06} \\ a_{21} - a_{12} & = & 2u_z\sin\theta. \label{eq07} \end{eqnarray} 式 (2), (5), (6) から経度 \(\phi\) は次式で求まります. \begin{equation} \tan\phi = \frac{a_{13} - a_{31}}{a_{32} - a_{23}}. \label{eq08} \end{equation} 前述の角度の任意性については, \(\sin\theta\) ≥ 0 ですので (5), (6) の正負で判断し, -180° ≤ \(\phi\) ≤ 180° とします. また, \(u_x^2+u_y^2+u_z^2=1\) を考慮して (5)~(7) から, \begin{equation} \sqrt{(a_{32}-a_{23})^2 + (a_{13}-a_{31})^2 + (a_{21}-a_{12})^2} = 2\sin\theta, \label{eq09} \end{equation} ですが,この式と (7), (1) から緯度 \(\lambda\) を求める次式を得ます. \begin{equation} \sin\lambda = \frac{a_{21}-a_{12}}{\sqrt{(a_{32}-a_{23})^2 + (a_{13}-a_{31})^2 + (a_{21}-a_{12})^2}}. \label{eq10} \end{equation} 回転角 \(\theta\) の決定は,式 (9) ではなく対角成分の和から導かれる次式, \begin{equation} a_{11} + a_{22} + a_{33} - 1 = 2\cos\theta, \label{eq11} \end{equation} を使用して 0° ≤ \(\theta\) ≤ 180° として求めます.但し,行列の各成分 \(a_{ij}\) は誤差を含むことが多いので,多くの情報を利用するために,式 (9) と (11) を組み合わせ, \(\theta\) は次式から求めるほうが良いかも知れません. \begin{equation} \tan\theta = \frac{\sqrt{(a_{32}-a_{23})^2 + (a_{13}-a_{31})^2 + (a_{21}-a_{12})^2}}{a_{11} + a_{22} + a_{33} - 1}. \end{equation} この場合は, 0° ≤ \(\theta\) ≤ 180° となるように注意が必要です.