はじめに
回転行列の見かたについては、前回の記事にて
この記事ではベクトルの内積(投影長)を切り口に行列の積を組み合わせた軸変換とその見かた、そこから回転行列への展開までを書いた。
今回は回転行列の中身を再度。方向余弦を使って導く。
まずは、図的に理解しやすい平面の回転行列(2×2 行列)からはじめて、3次元の回転行列( 3×3 行列 ) へと話をすすめる。
ま、とりあえず3次元の回転行列までおさえておけば、大概なんとかなる
(オイラー角とかとか)。。
二次元(平面)での回転行列
まずは方向余弦を使った座標変換から
(2x2行列):二次元(平面)
使用する座標軸
共通の原点Oをもつ、二つの座標系 O-X0Y0 と O-X1Y1 を考える。
座標軸は右手系、角度はX軸をY軸に向かう方向に回転させる向きを正)とする。ここで
- X0軸、 Y0軸方向の単位ベクトルをそれぞれ \(\overrightarrow{i_0} \)、\(\overrightarrow{j_0} \)
- X1軸、 Y1軸方向の単位ベクトルをそれぞれ \(\overrightarrow{i_1} \)、\(\overrightarrow{j_1} \)
とする。
各軸の方向余弦
O-X0Y0から見たX1Y1 各軸の方向余弦
二つの座標系 O-X0Y0 と O-X1Y1 の各軸についてお互いのなす角を
- X1軸に対して、X0軸 、Y0軸がなす角を \( \alpha_0 \)、\( \beta_0 \)
- Y1軸に対してX0軸 、Y0軸がなす角を \( \alpha_1 \)、\( \beta_1 \)
(ここで、X0軸 ,Y0軸は直行していることから \( \alpha_n \)+\( \beta_n \) =\(\displaystyle\frac{\pi}{2} ~~~(n=0,1)\) )
とする。

また、このO-X0Y0 の座標軸の方向ベクトル \(\overrightarrow{i_0}=\left ( \begin{array}{c} 1\\ 0 \end{array} \right ), \overrightarrow{j_0}=\left ( \begin{array}{c} 0\\ 1 \end{array} \right ) \)を使えば、
\(\overrightarrow{i_1} \)、\(\overrightarrow{j_1} \) はそれぞれ、
\( \begin{align} \overrightarrow{i_1}&= \cos\alpha_0\cdot \overrightarrow{i_0} + \cos\beta_0\cdot \overrightarrow{j_0} =\cos\alpha_0\left ( \begin{array}{c} 1\\ 0 \end{array} \right ) +\cos\beta_0\left ( \begin{array}{c} 0\\ 1 \end{array} \right ) \\ &=\left ( \begin{array}{c} \cos\alpha_0\\ \cos\beta_0 \end{array} \right ) ・・・① \end{align}\) \(\\[4pt]\) \( \begin{align} \overrightarrow{j_1}&= \cos\alpha_1\cdot \overrightarrow{i_0} + \cos\beta_1\cdot \overrightarrow{j_0} =\cos\alpha_1\left ( \begin{array}{c} 1\\ 0 \end{array} \right ) +\cos\beta_1\left ( \begin{array}{c} 0\\ 1 \end{array} \right ) \\& =\left ( \begin{array}{c} \cos\alpha_1\\\cos\beta_1 \end{array} \right ) ・・・② \end{align}\)
この余弦(cos)を使った方向ベクトル表示は、方向余弦とよばれる
- X1軸の方向余弦: \( \overrightarrow{i_1}=\left ( \begin{array}{c} \cos\alpha_0\\\cos\beta_0 \end{array} \right ) \) \(\\[4pt]\)
- Y1軸の方向余弦: \(\overrightarrow{j_1}=\left ( \begin{array}{c} \cos\alpha_1\\\cos\beta_1 \end{array} \right ) \)
\(\overrightarrow{i_1}\)、\(\overrightarrow{j_1}\) は、定義から原点Oを始点にもち常に大きさ1のベクトル。角度は任意にとる事ができるのでベクトルの終点の軌跡は円を描く。
(円の公式に当てはめれば)以下も成立
cos2α0 + cos2β0 = 1、かつ、cos2α1 + cos2β1 = 1 ・・・③
O-X1Y1から見たX0Y0 各軸の方向余弦
また逆に X1軸&Y1軸 側から、X0軸&Y0軸を表すと、
- X0軸に対してX1軸 、Y1軸がなす角 :α0、α1
- Y0軸に対してX1軸 、Y1軸がなす角 :β0、β1

となるため、①②式同様に
\(\overrightarrow{i_0}= \cos\alpha_0\cdot \overrightarrow{i_1} + \cos\alpha_1\cdot \overrightarrow{j_1} =\left ( \begin{array}{c} \cos\alpha_0 \\ \cos\alpha_1 \end{array} \right ) ・・・④ \) \(\\[2pt]\) \(\overrightarrow{j_0}= \cos\beta_0 \cdot \overrightarrow{i_1} + \cos\beta_1\cdot \overrightarrow{j_1} =\left ( \begin{array}{c} \cos\beta_0 \\\cos\beta_1 \end{array} \right ) ・・・⑤ \)
が成立。つまり
- \(\left ( \begin{array}{c} \cos\alpha_0 \\ \cos\alpha_1 \end{array} \right ) \) : \(\overrightarrow{i_0} \)の方向余弦(X0軸)\(\\[2pt] \)
- \(\left ( \begin{array}{c} \cos\beta_0 \\\cos\beta_1 \end{array} \right ) \) : \(\overrightarrow{j_0} \)の方向余弦(Y0軸)
また \(\overrightarrow{i_0} \)、\(\overrightarrow{j_0} \)の大きさは、定義から常に1,よってその方向余弦も③と同じ性質をもつ
cos2α0 + cos2α1 = 1、 cos2β0 + cos2β1 = 1 ・・・⑥
行列化: 2x2行列の座標軸変換
さて、次に平面上の任意の点Aのベクトル OA を考える。
その成分は、それぞれの座標系にて
- O-X0Y0 上のOA成分: (ax0 ay0)
- O-X1Y1 上のOA成分: (ax1 ay1)
とする。
(同じ点Aを表す) OA を O-X0Y0 、O-X1Y1上でそれぞれ表すと、
OA = ax0・ i0 + ay0・ j0 ・・・⑦
OA = ax1・ i1 + ay1・ j1 ・・・⑧ である。
さて、⑦式 に i0、j0 (④⑤式)を代入する
OA = ax0・ i0 + ay0・ j0
= ax0 (cos α0・ i1 + cos α1・j1)
+ ay0 (cos β0・ i1 + cos β1・j1)
並び替えて
= (ax0・cos α0 + ay0・cos β0) i1
+ (ax0・cos α1 + ay0・cos β1) j1 ・・・⑨
同じOAを表している事から、⑧式=⑨式。

つまり、
ax1・ i1 + ay1・ j1
= (ax0・cos α0 + ay0・cos β0) i1
+ (ax0・cos α1 + ay0・cos β1) j1
\( \overrightarrow{i_1}≠0 、\overrightarrow{j_1}≠0 \) より両辺の係数は等しい。よって
ax1 = ax0・cos α0 + ay0・cos β0
ay1 = ax0・cos α1 + ay0・cos β1
である事がわかる。これを行列で表わして
\(\left ( \begin{array}{c} a_{x1} \\ a_{y1} \end{array} \right ) =\left ( \begin{array}{cc} \cos\alpha_0&\cos\beta_0 \\ \cos\alpha_ 1 & \cos\beta_1 \end{array} \right ) \left ( \begin{array}{c} a_{x0} \\ a_{y0} \end{array} \right ) ・・・⑩ \)
⑩式の 行列部分
\(R_\alpha =\left ( \begin{array}{cc} \cos\alpha_0&\cos\beta_0 \\ \cos\alpha_ 1 & \cos\beta_1 \end{array} \right ) ・・・⑪ \)
これが、二次元の座標変換 ( <- 回転行列)。