三维空间变换:矩阵正交规范化的作用
目录
前言
成因
三维场景中的作用
开发中的典型应用
代码实测
为什么 3D 里要做「矩阵正交规范化」?
前言
今天在工程上遇见个问题,线性运算后得到的 就是旋转矩阵 转 四元数后,四元素分解出来的欧拉角都很小,十分疑惑。研究发现原来是线性运算得到的矩阵不一定是旋转矩阵,只能算是线性变换。
所以,如果有以下情况的问题,大概率都需要做正交规范化。
明明只是多次叠加旋转和平移,结果模型慢慢“歪”了;
法线开始乱跳,光照也不对了;
再取欧拉角或者四元数,全都是奇怪的小数。
其实这就是一个老问题 —— 矩阵“漂了”。
在 3D 计算机图形学、机器人学里,我们用 4×4 矩阵来表示物体姿态(旋转+缩放+平移),其中左上角的 3×3 是线性变换部分。理论上它应该是一个正交矩阵(RᵀR=I,det=1),也就是“只旋转不变形”。
但在实际计算中(浮点误差、插值、积累误差、剪切混入),它往往会悄悄变形 —— 不再严格正交。于是:
-
三个轴不再垂直;
-
长度不再是 1;
-
结果不再是纯旋转。
成因
在 3D 开发中,我们最熟悉的 4×4 世界矩阵
