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

二次元座標(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θ)になることから

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

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

 

使える数学へ戻る

 

【Excel】行列の積、逆行列、転置行列の計算

エクセルで行列の計算をするときの最大のポイントは、計算式を入力後

 

を同時に押すことです。

 

エクセルのヘルプを見ても、この事はどこに書いてあるのか?分からないので、ちょっとハマりやすいかもしれません。(私ははまりました。)

 

行列の積[MMULT(行列1,行列2)]

まず、行列の積の計算を行う行列を入力しておきます。
次に行列の積の計算結果を表示するセルを選択します。

 

 

セルを選択した状態で、行列の積の計算式

 

= MMULT(行列1, 行列2)

 

を入力します。

 

 

ここで、EnterではなくCtrlキーとShiftキーとEnterキーを同時に押します。

 

 

逆行列[MINVERSE(行列)]

逆行列に関しても同様に

 

=MINVERSE(行列)

 

と入力します。

 

 

ここで、EnterではなくCtrlキーとShiftキーとEnterキーを同時に押します。

 

 

転置行列[TRANSPOSE(行列)]

転置行列の計算式は

 

=TRANSPOSE(行列)

 

となります。

 

 

クドいですが、EnterではなくCtrlキーとShiftキーとEnterキーを同時に押します。

 

 

この行列の積、逆行列、転置行列がエクセルで解けると何が良いか?というと、

 

●連立方程式
●座標の回転
●最小二乗法
●擬似逆行列(一般逆行列)

 

などが解けるようになります。
これらを知らないと、いちいちプログラムを組んで計算の検証をしたりもしますが、
エクセルで出来るようになると、とっても簡単、お手軽です。

行列で連立方程式を解く

行列を使って連立方程式を解く方法を紹介します。

 

【計算例】

3つの方程式

 

 

を行列であらわすと

 

 

となります。この行列を逆行列を使ってX、Y、Zに関して解くと

 

 

となり連立方程式を行列で解くことができます。

 

 

…というのは普通すぎて面白くないので、3点からなる円の方程式を行列で解く方法を紹介します。

 

中心(a、b)、半径 r の円の方程式

 

(X – a)2 + (Y – b)2 = r2

 

を展開して

 

X2 + Y2 – 2aX – 2bY + a2 + b2 – r2 =  0

 

となり、A = 2a、B = 2b、C = r2 – a2 – b2 とおくと、上式は

 

AX + BY + C  =   X2 + Y2

 

となります。

 

ここで、円上の3点(X0、Y0)、(X1、Y1)、(X2、Y2を代入すると

 

AX0 + BY0 + C  =  X02 + Y02
AX1 + BY1 + C  =  X12 + Y12
AX2 + BY2 + C  =  X22 + Y22

 

の3本の式が成り立ち、これを行列で表現すると、

 

 

となり、A、B、Cに関して行列を解くと

 

 

となり、A、B、Cが求まることから、A = 2a、B = 2b、C = r2 – a2 – b2 より
中心半径を求めることができます。

 

行列を解く部分は

ガウスの消去法

のページを参照下さい。

 

使える数学へ戻る