US2S1L7——旋转矩阵

4×44 \times 4 矩阵的基本构成规则为:

[M11M12M13txM21M22M23tyM31M32M23tz0001]\begin{bmatrix} M_{11} & M_{12} & M_{13} & tx \\ M_{21} & M_{22} & M_{23} & ty \\ M_{31} & M_{32} & M_{23} & tz \\ 0 & 0 & 0 & 1 \end{bmatrix}

image

  1. 矩阵的 M3×3M^{3 \times 3} 部分用于表示旋转和缩放变换
  2. 矩阵的 t3×1t^{3 \times 1} 部分用于表示平移
  3. 矩阵的 01×30^{1\times3} 部分始终为零矩阵
  4. 矩阵的 右下角元素 始终为 1

旋转矩阵

旋转操作需要指定一个旋转轴(不一定是空间中的坐标轴)
这节课中的旋转矩阵是指绕着 空间中的x轴、y轴、z轴进行旋转时的变换矩阵,他们分别是:

绕 x 轴旋转 β 度,旋转矩阵为:

[10000cosβsinβ00sinβcosβ00001]\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & cos\beta & -sin\beta & 0 \\ 0 & sin\beta & cos\beta & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}

绕 y 轴旋转 β 度,旋转矩阵为:

[cosβ0sinβ00100sinβ0cosβ00001]\begin{bmatrix} cos\beta & 0 & sin\beta & 0 \\ 0 & 1 & 0 & 0 \\ -sin\beta & 0 & cos\beta & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}

绕 z 轴旋转 β 度,旋转矩阵为:

[cosβsinβ00sinβcosβ0000100001]\begin{bmatrix} cos\beta & -sin\beta & 0 & 0 \\ sin\beta & cos\beta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}

注意:这些旋转矩阵都是根据三维几何学的概念和三角函数推导出来的,我们这里不做深入推导讲解
感兴趣的同学可以去了解 旋转矩阵的推导方式,可阅读此篇:旋转变换(一)旋转矩阵-CSDN博客

旋转矩阵的计算

需要注意的是,旋转矩阵主要是由基础变换矩阵的构成规则当中的 3×33 \times 3 矩阵决定的
因此,平移部分的 3×13 \times 1 矩阵都为0,并不影响计算,
所以**点(w=1w=1**​ **)和向量(w=0w=0**​ )与旋转矩阵进行计算都会发生改变
几何意义就是 点 或 向量 围绕某一个轴进行旋转,得到一个新的 点 和 向量。

[M11M12M13txM21M22M23tyM31M32M23tz0001]\begin{bmatrix} M_{11} & M_{12} & M_{13} & tx \\ M_{21} & M_{22} & M_{23} & ty \\ M_{31} & M_{32} & M_{23} & tz \\ 0 & 0 & 0 & 1 \end{bmatrix}

因此旋转矩阵的计算就是直接和表示向量或点的列矩阵进行乘法运算即可,得到的结果就是旋转后的结果

旋转矩阵是否是正交矩阵(通过转置矩阵得逆矩阵)

首先说结论,旋转矩阵是正交矩阵(通过正交矩阵的判断方式可以得到该结论)
因此 x、y、z 轴的旋转矩阵的逆矩阵是它们的转置矩阵
我们可以利用旋转矩阵的逆矩阵(转置矩阵)来进行还原旋转( 变换的逆向变换
假设 pp 点绕某个轴的旋转矩阵 RR 进行了旋转变换,得到了 pp'
如果我们想将 pp' 还原为 pp,则只需要用 RR 的转置矩阵乘以 pp' 即可得到结果 pp