正交矩阵(orthogonal matrix)是满足 QTQ=QQT=IQ^T Q = Q Q^T = I 的实方阵,最核心的性质是它的逆等于它的转置:Q−1=QTQ^{-1} = Q^T。

这个条件有几组彼此等价的说法:

  • 列向量(或行向量)构成标准正交基:任意两列的点积为 0,每列的长度为 1,即 qiTqj=δijq_i^T q_j = \delta_{ij}
  • 保持长度、内积与夹角:∣Qv∣=∣v∣|Qv| = |v|、(Qu)⋅(Qv)=u⋅v(Qu) \cdot (Qv) = u \cdot v,也就是不拉伸、不剪切
  • 行列式为 ±1\pm 1:det⁡Q=+1\det Q = +1 是纯旋转(proper rotation),det⁡Q=−1\det Q = -1 相当于一次旋转再叠加一次镜像(reflection)
  • 正交矩阵的转置、逆、乘积仍然是正交矩阵

二维、三维的旋转矩阵都是正交矩阵,以绕 zz 轴旋转为例,它的逆就是转置,也等于反向旋转:

Rz(θ)=(cos⁡θ−sin⁡θ0sin⁡θcos⁡θ0001),Rz−1(θ)=RzT(θ)=Rz(−θ)R_z(\theta) = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix}, \qquad R_z^{-1}(\theta) = R_z^{T}(\theta) = R_z(-\theta)

图形学里很多"求逆"都可以因此免掉:视图矩阵的旋转部分、TBN 基、坐标系之间的轴转换、四元数转出来的旋转矩阵……只要是正交矩阵,逆就是 transpose

旋转与镜像都是正交的,非等比缩放、平移不是。所以非等比缩放下模型矩阵的法线必须乘逆转置 (M−1)T(M^{-1})^T,不能直接用左上 3×33 \times 3;也正因为浮点误差会让旋转矩阵的列慢慢变长、失去垂直性,引擎会定期对缓存的旋转矩阵、四元数重新做一次正交化(Gram-Schmidt 或归一化)来纠正漂移。