



在所有的变换中,旋转变换因其在机械工程领域中高度可观测的行为而具有特别直观的吸引力。此外,它们还在开发和分析多种机器学习工具中扮演了重要角色。在本节中,我们将概述旋转矩阵(也被称为正交矩阵)。本节的完整代码可从http://mng.bz/2eNN获取,并且可以使用Jupyter Notebook执行。
图2.14展示了点( x , y )绕原点旋转了角度 θ 。原始点的位置向量与 X 轴的夹角为 α 。旋转后,该点的新坐标为( x′ , y′ )。注意,根据定义,旋转不会改变点到旋转中心的距离,正如图中的圆圈所示。
以下为一些常用的旋转矩阵:
· 在平面内绕原点旋转绕角度 θ (见图 2.14 ):
· 在三维空间中绕 Z 轴旋转角度 θ :
需要注意的是,在此旋转过程中,点的 z 坐标保持不变:
这个旋转矩阵有一个特征值为1,对应的特征向量是 Z 轴——你可以自己来验证这一点。这意味着 Z 轴上的点在经过前述矩阵变换(旋转)后,会映射到其自身,这与 z 坐标在此旋转中保持不变的特性是一致的。
· 在三维空间中绕 X 轴旋转角度 θ :
图2.14 点在原点附近的平面内旋转的情况。根据定义,旋转不会改变点到旋转中心的距离,参见图中的圆圈
请注意, X 坐标不受该旋转的影响,并且 X 轴是这个矩阵的一个特征向量:
· 在三维空间中绕 Y 轴旋转角度 θ :
请注意, Y 坐标不受该旋转的影响,并且 Y 轴是这个矩阵的一个特征向量:
代码清单2.14 展示了用于旋转矩阵的PyTorch代码。
代码清单2.14 旋转矩阵
代码清单2.15 展示了旋转矩阵的应用。
代码清单2.15 旋转矩阵的应用
矩阵 R 当且仅当其转置矩阵也是其逆矩阵时是正交的,即 R T R = R R T = I 。所有旋转矩阵都是正交矩阵,都代表某种旋转。例如:
图2.15 旋转可视化的过程。这里,原始向量 u 首先绕 Z 轴旋转45°得到向量 v ,随后再绕 X 轴旋转45°得到向量 w
同样地,你也可以验证这里展示的旋转矩阵的正交性。
正交性与长度保持
正交性意味着旋转后的向量长度保持不变。给定任意向量 x 和旋转矩阵 R ,设 y = Rx 为旋转后的向量。可以轻易看出,两个向量 x , y 的长度(大小)是相等的,
在该推导过程中,利用了以下的初等矩阵理论:
( AB ) T = B T A T
负角度旋转
负角度旋转等同于对旋转矩阵进行反转,即对旋转矩阵进行转置操作。例如,考虑平面上的旋转,假设一个点 x 通过矩阵 R 绕原点旋转到向量 y ,则有
接下来,我们可以通过旋转- θ 的角度,从 y 再次回到 x 。相应的旋转矩阵可表示为
换句话说, R T 实现了相反方向的旋转,即按照负角度进行旋转。
我们可以通过在PyTorch中创建一个旋转矩阵,并对它进行转置操作,然后检查原始矩阵与转置矩阵的乘积是否为单位矩阵,以此来验证旋转矩阵的正交性,如代码清单2.16所示。
代码清单2.16 旋转矩阵的正交性
设 λ , e 为旋转矩阵 R 的一对特征值-特征向量,则有
Re =λ e
对等式两边同时进行转置,得到
e T R T =λ e T
分别用等价的实体 Re 和 λ e 右乘等式两边,得到
e T R T ( Re )=λ e T (λ e ) ⇔ e T ( R T R ) e =λ 2 e T e ⇔ e T ( I ) e =λ 2 e T e
⇔ e T e =λ 2 e T e ⇔ λ 2 = 1⇔ λ= 1
(负解 λ =-1对应于反射。)因此,所有的旋转矩阵都有1作为它们的一个特征值。相应的特征向量 e 满足 Re = e ,这些特征向量即为旋转轴:旋转后位置保持不变的点集。
代码清单2.17展示了旋转轴的计算方法。
代码清单2.17 旋转轴