はじめに
前回の記事内で、行列の積の成分計算は
- 行ベクトルと列ベクトルの内積計算
と同じである事を書いた。(こちら)
これを利用すると、行列の積の計算に内積の特長が利用できる。
これが、行列を使った軸変換のキモ。回転行列は軸変換の一部(つまり限定版)。
(内積?投影長?ん?であれば、以下の記事をご参照)
2軸に対して行うのであれば、2つの行ベクトル(つまり2x2行列)、
3軸に対して行うのであれば、3つの行ベクトル(つまり3x3行列)、
n個の軸に対して行うのであればn個の行ベクトル(つまりnxn行列)
を用意すれば、その数の軸変換ができる。
以下にその流れを。
ベクトルの内積の利用した行列による軸変換
あらためて
”正規ベクトルの行ベクトルで構成される行列” と ”任意の列ベクトル”
の行列の積を考える。
ベクトルの内積の意味をふまえると、この場合の行列の積の成分計算結果は、
”列ベクトルの長さを行ベクトル方向へ投影した長さ”
である。
つまり、行ベクトル方向を軸に設定し、列ベクトルの始点を原点とすれば、その軸から見た列ベクトルの座標値が算出される。
1次元ではただのベクトル計算になるので、具体的な例として、2次元(2×2行列)から始める。つまり2軸の軸変換。
(この感覚があれば、あとは3次元でもn次元の軸変換も同じ。)
ちなみにこの軸変換の話はこの先、任意軸への座標軸変換の話から回転行列(オイラー角)へと続く。
まずは任意の軸への座標軸変換から
座標系の設定
基準の座標系 O-XYを設定する。この座標系O-XYは、原点Oを通り直行するX軸 Y軸をもつ座標系。
X軸、Y軸 の方向の単位ベクトルは
- \(\overrightarrow{i} \): X軸の方向の単位ベクトル
- \(\overrightarrow{j} \): Y軸の方向の単位ベクトル
とする。
(当然、\(\overrightarrow{i} \) 、\(\overrightarrow{j} \)は O-XY上の正規直行基底)
あわせて、O-XY上に新たな2軸を追加(M軸とN軸:方向は任意、原点Oは共有、)<- まずは任意方向の軸設定(直行でなくても可)
これを座標系 O-MNとして設定。

このM軸、N軸 の方向を
- \(\overrightarrow{i_m}= (x_m , y_m) \) : M軸の方向ベクトル (単位ベクトル: \( {x_m}^2+{y_m}^2=1 \) )
- \(\overrightarrow{j_n}= (x_n , y_n) \) : N軸の方向ベクトル (単位ベクトル:\( {x_n}^2+{y_n}^2=1 \) )
にて定義し、あわせてX軸とM軸のなす角をα、 X軸とN軸のなす角をβとし、これらのベクトルをO-XY座標系で成分表示すれば
- \(\overrightarrow{i_m}= (x_m , y_m) = (\cos\alpha , \cos(\displaystyle\frac{π}{2}-\alpha))= (\cos\alpha , \sin\alpha) \)
- \(\overrightarrow{j_n}= (x_n , y_n) = (\cos\beta , \cos(\displaystyle\frac{π}{2}-\beta)) = (\cos\beta , \sin\beta) \)
ちなみに、\(\overrightarrow{i_m}\)、\(\overrightarrow{j_n}\) は単位ベクトル、原店Oを基点かつ方向が任意である事を踏まえれば、これらのM軸、N軸の方向を示す各ベクトルは原点Oを中心としたr=1の円。
任意の軸への座標変換
さてこれを踏まえ軸変換。X軸->M軸 、 Y軸 ->N軸への変換を考える。
平面上に点Aを設定する。
O-XY上の点Aの座標は \( \left ( \begin{array}{c} x \\y \end{array} \right ) \) とし、原点Oから点Aへのベクトルを \( \small{\overrightarrow{ OA }}=\normalsize{\overrightarrow{a}} \)とする。
次に、O-MN上での点Aの座標を \( \left ( \begin{array}{c} m \\n \end{array} \right ) \)とすれば、\( \left ( \begin{array}{c} m \\n \end{array} \right ) \) は、\(\overrightarrow{a} \)のM軸 N軸への投影成分である事から、前述のベクトルの内積の性質を使い、
\( \begin{align}
m &= \overrightarrow{i_m} \cdot \overrightarrow{a} \\
&=\cos\alpha\cdot x + \sin\alpha\cdot y
\end{align} \)
\( \begin{align}
n &= \overrightarrow{j_n} \cdot \overrightarrow{a} \\
&=\cos\beta\cdot x + \sin\beta\cdot y
\end{align} \)

となる。
これを行列化する。つまり、任意の軸への投影成分は以下の
\( \begin{align}
m &=\cos\alpha\cdot x + \sin\alpha\cdot y \\
n &=\cos\beta\cdot x + \sin\beta\cdot y
\end{align} \)
を使い、行列として式にあらわせば
\( \normalsize{\left ( \begin{array}{c}
m\\n\end{array} \right )
=\left ( \begin{array}{cc}
\cos\alpha&\sin\alpha \\
\cos\beta&\sin\beta \end{array}\right)
\left ( \begin{array}{c}
x\\y \end{array}\right) } \) ・・・①
と表現できる。これが任意の軸への投影。
軸変換を行う行列の見方
改めてベクトルの内積計算が投影である事をふまえ①式を見れば、軸変換は

の行列で可能である事がわかる。この見方を頭の片隅にいれておく。
行列の行数/列数が増えても見方は同じ。
この座標軸変換が回転行列の入り口。というか、この座標軸変換ができる特徴をを使って、変換後の座標軸が元の座標に対して一定角回転するように変換したものが回転行列。
(ざっくり言えば、行ベクトルが全て単位ベクトル(内積による変換後の軸の値がそのまま新しい軸の座標値)、かつ行ベクトル同士が直行ベクトル(変換後の座標軸も直行)であれば、回転行列になる)
次のページにて少し回転行列の詳細を。。