アフィン変換行列から平行移動量を取得する
行列がアフィン変換だと分かっていれば、次のように平行移動量を取得できます。
列優先の場合:
行列
⎝⎜⎜⎛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次元空間の座標値として扱えます。