正交矩阵(orthogonal matrix)是满足 QTQ=QQT=I 的实方阵,最核心的性质是它的逆等于它的转置:Q−1=QT。
这个条件有几组彼此等价的说法:
- 列向量(或行向量)构成标准正交基:任意两列的点积为 0,每列的长度为 1,即 qiTqj=δij
- 保持长度、内积与夹角:∣Qv∣=∣v∣、(Qu)⋅(Qv)=u⋅v,也就是不拉伸、不剪切
- 行列式为 ±1:detQ=+1 是纯旋转(proper rotation),detQ=−1 相当于一次旋转再叠加一次镜像(reflection)
- 正交矩阵的转置、逆、乘积仍然是正交矩阵
二维、三维的旋转矩阵都是正交矩阵,以绕 z 轴旋转为例,它的逆就是转置,也等于反向旋转:
Rz(θ)=cosθsinθ0−sinθcosθ0001,Rz−1(θ)=RzT(θ)=Rz(−θ)
图形学里很多"求逆"都可以因此免掉:视图矩阵的旋转部分、TBN 基、坐标系之间的轴转换、四元数转出来的旋转矩阵……只要是正交矩阵,逆就是 transpose
旋转与镜像都是正交的,非等比缩放、平移不是。所以非等比缩放下模型矩阵的法线必须乘逆转置 (M−1)T,不能直接用左上 3×3;也正因为浮点误差会让旋转矩阵的列慢慢变长、失去垂直性,引擎会定期对缓存的旋转矩阵、四元数重新做一次正交化(Gram-Schmidt 或归一化)来纠正漂移。