图形学基础 | 3D变换
复习一下3D矩阵变换的相关知识.
平移变换
缩放变换
- [sx,sy,sz]是缩放因子
旋转变换
- 这是三种变换中最复杂的变换
- 绕X轴旋转
- 绕Y轴旋转
- 绕Z轴旋转
绕X轴旋转
绕Y轴旋转
绕Z轴旋转
绕任意轴旋转
方法1:
- 将旋转轴平移至原点
- 将旋转轴旋转至XOZ平面
- 将旋转轴旋转至于Z轴重合
- 绕Z轴旋转θ度
- 执行步骤3的逆过程
- 执行步骤2的逆过程
- 执行步骤1的逆过程
假设用v1(a1, b2, c2)和v2(a2, b2, c2)来表示旋转轴,θ表示旋转角度。为了方便推导,暂时使用右手系并使用列向量,待得出矩阵后转置一下即可.
步骤1是一个平移操作,将v1v2平移至原点,对应的矩阵为
步骤2是一个旋转操作,将p(p = v2 -v1)旋转至XOZ平面,步骤3也是一个旋转操作,将p旋转至与Z轴重合,这两个操作对应的图如下。
做点p在平面YOZ上的投影点q。再过q做Z轴垂线,则r是p绕X轴旋转所得,且旋转角度为α,且
于是旋转矩阵为
步骤三. 现在将r绕Y轴旋转至与Z轴重合,旋转的角度为-beta(方向为顺时针),且
于是得到旋转矩阵为
步骤4: 是绕Z轴旋转
如果旋转轴是过原点的,那么第一步和最后一步的平移操作可以省略,也就是把中间五个矩阵连乘起来,再转置一下,得到下面的绕任意轴旋转的矩阵
方法2: 罗德里格斯公式
罗德里格斯公式(Rodriguez formula):
1.I是三阶单位向量;
2.k是旋转轴 theta是旋转角;