回転行列、拡大縮小行列、平行移動行列(三次元座標の場合)

二次元座標(X,Y座標)の場合のアフィン変換行列についてはこちらで説明しましたが、今回は三次元座標(X,Y,Z座標)のアフィン変換となります。

三次元座標の場合、まず座標軸の定義、回転方向の定義を明確に覚えます。

この座標は右手座標系と呼ばれます。
フレミングの法則のときのように右手親指人差し指中指をそれぞれ
直交するようにします。
このとき親指から順に親指がX軸人差し指がY軸中指がZ軸の方向と
なります。
回転方向は電流と磁界の向きと同じように電流軸の向き磁界回転方向
に相当します。(右ねじの法則と同じです。)

 

回転行列

三次元の回転行列の前に二次元の回転行列のおさらいです。
二次元の回転行列は以下の通りとなります。

 

 

これをベースに三次元座標の場合では、回転する軸の正の方向から原点の方向を見たときに、X軸、Y軸はそれぞれ何軸に相当するのか?を考えれば、二次元座標のXやYの変数の置き換えで導き出すことができます。
行列変換しない軸に関しては単位行列でそのまま残します。

 

【X軸周りの回転】

【Y軸周りの回転】

【Z軸周りの回転】

拡大縮小行列

点(x, y, z)を原点に関してX軸方向に、Y軸方向に、Z軸方向にZする行列は

 

平行移動行列

点(x, y, z)をX軸方向に、Y軸方向に、Z軸方向にZだけ移動する行列は

 

補足

三次元の座標変換に関して検索すると座標変換は下記のように

行ベクトルで表記される場合もあるのですが、変換行列の値が変わるので、
混同しないようご注意下さい。
この表現はマイクロソフトがお得意で、DirectX(Direct3D)や.NETのアフィン変換でしか使われないので、特に必要の無い場合は覚えない方が無難です。

 

関連記事

二次元座標のアフィン変換についてはこちら↓にまとめています。

アフィン変換(平行移動、拡大縮小、回転、スキュー行列)

 

使える数学へ戻る

 

回転行列、拡大縮小行列、平行移動行列

本記事は、私がアフィン変換を勉強し始めた当初の記事になります。
今では、3×3行列の同次座標行列と呼ばれる行列しか用いておらず、こちらの方が断然おススメなので、下記ページを参照ください。

アフィン変換(平行移動、拡大縮小、回転、スキュー行列)

以下は、2×2行列を使ったアフィン変換の説明です。

回転行列

点(x, y)を原点まわりに反時計方向にθ度回転する行列は

 

拡大縮小行列

点(x, y)を原点に関してX軸方向に、Y軸方向にする行列は

 

平行移動行列

点(x, y)をX軸方向に、Y軸方向にだけ移動する行列は

 

 

ただし、平行移動だけ行列の足し算になると、扱いにくい場合があるので3×3行列を用いて以下のように表す場合もあります。
というより、こちらを使う方が便利です。(私はこちらしか使いません。)

【回転行列】

【拡大縮小行列】

【平行移動行列】

 

とすることで、すべての座標変換を行列の積で扱うことができます。

この行列を同次座標行列と言います。
詳細はこちらを参照ください。

 

参考まで...

個人的には回転行列を覚えるのは苦手で、SinとCosが逆になっりマイナスのつける位置を間違ったりしていたのですが、次のように考えることで少しは覚えやすくなりました。

下図のように

点(1,0)をθ度回転すると(Cosθ、Sinθ)
点(0,1)をθ度回転すると(-Sinθ、Cosθ)

に移動することはすぐにわかります。

このことを行列で表現すると
点(1,0)が(Cosθ、Sinθ)になることから

点(0,1)が(-Sinθ、Cosθ)になることから

という事がわかります。
これを合わせて表現すると

となり、回転行列が求まります。
この計算を何回か繰り返すと、そのうち覚えると思います。

 

使える数学へ戻る