はじめに
回転行列の見かたについては、前回の記事にて
この記事ではベクトルの内積(投影長)を切り口に行列の積を組み合わせた軸変換とその見かた、そこから回転行列への展開までを書いた。
今回は回転行列の中身を再度。方向余弦を使って導く。
まずは、図的に理解しやすい平面の回転行列(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 ) ・・・⑪ \)
これが、二次元の座標変換 ( <- 回転行列)。
二次元:回転行列への展開
座標系の回転を示す回転行列
⑪式の角度をα0でまとめる。
座標軸が直行であること、また軸同士の関係から
- β0 = π/2 – α0
- α1 = π/2 + α0
- β1 = π/2 – β0 = α0
である。
これを使えばRα は、
\( \begin{align}
R_\alpha &=\left ( \begin{array}{cc} \cos\alpha_0&\cos\beta_0 \\ \cos\alpha_ 1 & \cos\beta_1 \end{array} \right ) = \left ( \begin{array}{cc} \cos\alpha_0&\cos ( \displaystyle\frac{\pi}{2}-\alpha_0 ) \\ \cos ( \displaystyle\frac{\pi}{2}+\alpha_0 ) & \cos\alpha_0 \end{array} \right ) \\[8pt]
&= \left ( \begin{array}{cc} \cos\alpha_0&\sin \alpha_0 \\ -\sin \alpha_0 & \cos\alpha_0 \end{array} \right ) ・・・⑫
\end{align} \)
これが 回転角 α0 の回転行列。つまり⑩式は
\(\left ( \begin{array}{c} a_{x1} \\ a_{y1} \end{array} \right ) = \left ( \begin{array}{cc} \cos\alpha_0&\sin \alpha_0 \\ -\sin \alpha_0 & \cos\alpha_0 \end{array} \right ) \left ( \begin{array}{c} a_{x0} \\ a_{y0} \end{array} \right ) ・・・⑬ \)
座標系上の点の回転を示す回転行列
⑬式は座標系を回転させる場合。
座標系は動かずに、点A (ax0 ay0) が原点中心に点B (a`x1 a`y1) へと回転した場合を考える。
視点を変える。
自身が座標軸と一緒に動くと、点Aは相対的に逆方向に動く。つまり、回転している座標系と同時に回転しながら点Aをみていると思えばよい。
(座標軸を+α0 回転と、点Aが-α0 の回転は同じ(視点が違うのみ))
つまり、点Aを α0 回転させる行列 R’α は、⑪式の Rα に -α0 を代入したものとなる。
\( R~’_\alpha = \left ( \begin{array}{cc} \cos(-\alpha_0 ) &\sin(-\alpha_0 ) \\ -\sin (-\alpha_0) & \cos(-\alpha_0) \end{array} \right ) = \left ( \begin{array}{cc} \cos\alpha_0 & – \sin\alpha_0 \\ \sin\alpha_0 & \cos\alpha_0 \end{array} \right ) ・・・⑭ \)
これが、同一座標系上で点を動かすときに使う回転行列である。
⑫式より、こっちの方がよく目にするかも。
これを使うと、 点Aが角度α0回転した点Bの座標は
\(\left ( \begin{array}{c} a’_{x1} \\ a’_{y1} \end{array} \right ) = \left ( \begin{array}{cc} \cos\alpha_0& -\sin \alpha_0 \\ \sin \alpha_0 & \cos\alpha_0 \end{array} \right ) \left ( \begin{array}{c} a_{x0} \\ a_{y0} \end{array} \right ) ・・・⑮\)
で求める事ができる。