几何变换

几何变换

概述

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

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

平移

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

平移的齐次变换矩阵:

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

其逆矩阵:

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

缩放

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

缩放的齐次变换矩阵:

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

其逆矩阵:

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

旋转

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

旋转角度 \(\theta\)

旋转的齐次变换矩阵:

\[R(r,\theta)= \left( \begin{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} \right) \]

其逆矩阵:

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

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

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

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

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

posted @ 2021-02-25 14:47  睿阳  阅读(331)  评论(0编辑  收藏  举报