アフィン変換行列から平行移動量を取得する
行列がアフィン変換だと分かっていれば、次のように平行移動量を取得できます。
列優先の場合:
行列 ⎝⎜⎜⎛M11M21M31M41M12M22M32M42M13M23M33M43M14M24M34M44⎠⎟⎟⎞ の平行移動量は ⎝⎛M14M24M34⎠⎞ です。
行優先の場合:
行列 ⎝⎜⎜⎛M11M21M31M41M12M22M32M42M13M23M33M43M14M24M34M44⎠⎟⎟⎞ の平行移動量は (M41M42M43) です。
汎用的な行列から平行移動量を取得する
汎用的な行列を扱う場合、結果は4次元ベクトル(同次座標)になります。
列優先の場合:
行列 ⎝⎜⎜⎛M11M21M31M41M12M22M32M42M13M23M33M43M14M24M34M44⎠⎟⎟⎞ の平行移動量は ⎝⎜⎜⎛M14M24M34M44⎠⎟⎟⎞ です。
行優先の場合:
行列 ⎝⎜⎜⎛M11M21M31M41M12M22M32M42M13M23M33M43M14M24M34M44⎠⎟⎟⎞ の平行移動量は (M41M42M43M44) です。
理屈
列優先の場合で説明します。
原点座標(0,0,0)
を行列で変換したときの移動先の座標値が平行移動量 t と同じなので
t=⎝⎜⎜⎛M11M21M31M41M12M22M32M42M13M23M33M43M14M24M34M44⎠⎟⎟⎞⎝⎜⎜⎛0001⎠⎟⎟⎞=⎝⎜⎜⎛M14M24M34M44⎠⎟⎟⎞
となり、行列の第4列を取り出したのと同じ結果になります。
行列がアフィン変換であれば第4行が定数なので
t=⎝⎜⎜⎛M11M21M310M12M22M320M13M23M330M14M24M341⎠⎟⎟⎞⎝⎜⎜⎛0001⎠⎟⎟⎞=⎝⎜⎜⎛M14M24M341⎠⎟⎟⎞
となり、 M14, M24, M34 をそのまま3次元空間の座標値として扱えます。