はじめに
前回の記事内で、行列の積の成分計算は
- 行ベクトルと列ベクトルの内積計算
と同じである事を書いた。(こちら)
これを利用すると、行列の積の計算に内積の特長が利用できる。
これが、行列を使った軸変換のキモ。回転行列は軸変換の一部(つまり限定版)。
(内積?投影長?ん?であれば、以下の記事をご参照)
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) } \) ・・・①
と表現できる
軸変換を行う行列の見方
改めて①式を見直せば、軸変換を行う行列は
である事がわかる。この見方を頭の片隅にいれておく。
行列の行数/列数が増えても見方は同じ。
この座標軸変換が回転行列の入り口。
回転行列
次に、変換後の任意の2軸(M軸とN軸)に
”変換前の2軸(X軸Y軸)と同じ原点を共有し、かつ位置関係、直行関係をそのまま保つ”
という制限を加える。
つまり、変換前の座標系を、原点O中心に丸ごと回転させる変換となる。
座標系の設定
変換前の座標軸O-X0Y0は上述と同じ設定。
-> 原点Oを通り、直行するX0Y0軸をもつ座標系。
座標軸は右手系で設定、角度はX→Y方向を正
変換後の座標系をO-X1Y1とし、O-X1Y1も右手系
かつ、”X1軸 Y1軸も直行関係である”、の制限を加える。
つまり、座標系は右手系を保ち軸の配置に変更はしない(角度の正負方向も同じ)
前回同様、平面上に点Aを設定する。
原点Oを始点に点A結ぶベクトルを \( \normalsize{\overrightarrow{a}} \)とし、
O-X0Y0 上の点Aの座標を \( \left ( \begin{array}{c} x_0 \\y_0 \end{array} \right ) \) \( \\[2pt] \) O-X1Y1 上の点Aの座標を\( \left ( \begin{array}{c} x_1 \\y_1 \end{array} \right ) \)
とする(図②)
回転行列の設定と見方
変換される軸は X0軸-> X1軸 、 Y0軸 -> Y1軸 である。
O-X1Y1 ではX1軸Y1軸の関係はO-X0Y0の関係を保つので、αが決まれば、①式のβも自動的にきまる。
つまり
\(\beta= \alpha+\displaystyle\frac{π}{2} \)・・・②
これを①式に代入すれば
\( \begin{align}
\left ( \begin{array}{c}
x_1\\y_1 \end{array} \right )
& = \left ( \begin{array}{cc}
\cos\alpha & \sin\alpha \\
\cos\beta & \sin\beta \end{array}\right)
\left ( \begin{array}{c}
x_0\\y_0 \end{array}\right) \\[8pt]
&= \left ( \begin{array}{cc}
\cos\alpha & \sin\alpha \\
\cos(\alpha+\displaystyle\frac{π}{2}) & \sin(\alpha+\displaystyle\frac{π}{2}) \end{array}\right)
\left ( \begin{array}{c}
x_0\\y_0 \end{array}\right) \\[8pt]
& = \left ( \begin{array}{cc}
\cos\alpha & \sin\alpha \\
-\sin\alpha & \cos\alpha \end{array}\right)
\left ( \begin{array}{c}
x_0\\y_0 \end{array}\right) ・・・③
\end{align} \)
これが回転行列。
(当然ではあるが、一つの回転角αで変換前後の座標値の関係を示す事ができる)
この行列の見方は軸変換の場合と同じである。
Ra において、1行目を抜き出した \( (\cos\alpha \sin\alpha) \) を \(\overrightarrow{i_1} \)、2行目を抜き出した \( (-\sin\alpha \cos\alpha) \) を \(\overrightarrow{j_1} \)とみれば、これらの行ベクトルは変換後の軸の方向である。
つまり、行列内の各行ベクトルは変換後の軸の方向を示す。
また回転しただけなので当然\(\overrightarrow{i_1} \)、\(\overrightarrow{j_1} \)もその平面上での正規直行基底(大きさ1&互いに直行)
追記
ベクトルの内積を用いた軸変換から回転行列へと展開したが、回転行列については、方向余弦を用いた導入の方がわかりやすいかも。。以下の記事にて。