几何变换

几何变换

概述

XYZ坐标系中的坐标和位移都可以用向量表示,将向量进行平移、缩放、旋转等几何变换操作可以用齐次变换矩阵相乘得到结果,而其反向操作可以用其逆矩阵相乘来实现,多次操作可以通过矩阵相乘来实现。

本文使用情景:以右手坐标系为基准,向量均为列向量,变换时矩阵左乘。

平移

平移向量 (t=(tx,ty,tz))

平移的齐次变换矩阵:

[T(t)= left( egin{matrix} 1&0&0&tx\ 0&1&0&ty\ 0&0&1&tz\ 0&0&0&1\ end{matrix} ight) ]

其逆矩阵:

[T^{-1}(t)=T(-t)= left( egin{matrix} 1&0&0&-tx\ 0&1&0&-ty\ 0&0&1&-tz\ 0&0&0&1\ end{matrix} ight) ]

缩放

缩放倍率 (s=(sx,sy,sz))

缩放的齐次变换矩阵:

[S(s)= left( egin{matrix} sx&0&0&0\ 0&sy&0&0\ 0&0&sz&0\ 0&0&0&1\ end{matrix} ight) ]

其逆矩阵:

[S^{-1}(s)=S(1/s)= left( egin{matrix} 1/sx&0&0&0\ 0&1/sy&0&0\ 0&0&1/sz&0\ 0&0&0&1\ end{matrix} ight) ]

旋转

旋转轴方向 (r=(n_1,n_2,n_3))

旋转角度 ( heta)

旋转的齐次变换矩阵:

[R(r, heta)= left( egin{matrix} n_1^2+(1-n_1^2)cosθ&n_1n_2(1-cosθ)-n_3sinθ&n_1n_3(1-caosθ)+n_2sinθ&0\ n_1n_2(1-cosθ)-n_3sinθ&n_2^2+(1-n_2^2)cosθ&n_2n_3(1-caosθ)+n_1sinθ&0\ n_1n_3(1-cosθ)-n_2sinθ&n_2n_3(1-caosθ)+n_1sinθ&n_3^2+(1-n_3^2)cosθ&0\ 0&0&0&1\ end{matrix} ight) ]

其逆矩阵:

[R^{-1}(r, heta)=R(r,- heta) ]

将X、Y、Z轴的方向向量代入,即可得到特定的齐次变换矩阵。

多个旋转矩阵相乘的技巧:

若一个旋转轴方向会随着另一个旋转轴方向旋转,那么可以先乘其旋转矩阵再乘另一个旋转矩阵。

否则,先乘另一个旋转矩阵再乘这个旋转矩阵。

原文地址:https://www.cnblogs.com/fr-ruiyang/p/14446877.html