四元数如何用于 3D 旋转(代替欧拉角和旋转矩阵)
在三维空间中,物体的旋转可以用 欧拉角、旋转矩阵 或 四元数 来表示。
四元数相比于欧拉角和旋转矩阵有 计算更高效、避免万向锁、存储占用少 等优点,因此广泛用于 游戏开发、机器人学、计算机图形学和航空航天 等领域。
四元数的定义
一个四元数 q 由四个实数组成:
q = w + x i + y j + z k q=w+xi+yj+zk q=w+xi+yj+zk
其中:w,x,y,z 是实数;i,j,k 是虚单位,满足特定的乘法规则
旋转的基本表示方式
方式 | 表示方法 | 优缺点 |
---|---|---|
欧拉角(Euler Angles) | (α,β,γ) 对应绕 X, Y, Z 轴的旋转 | 优点:直观易理解,和现实生活的旋转方式类似。缺点:存在万向锁(Gimbal Lock)问题,计算复杂。 |
旋转矩阵(Rotation Matrix) | 3×3 矩阵 | 优点:适用于线性代数计算,方便复合旋转。缺点:需要存储 9 个值,数值误差累积会导致非正交性。 |
四元数(Quaternion) | q=w+xi+yj+zk | 优点:旋转计算简单,存储更紧凑(只需要 4 个数),避免万向锁,插值平滑。缺点:不直观,不容易手动调整。 |
旋转四元数的定义
一个 旋转四元数q 表示围绕单位向量 (x,y,z) 旋转角度 θ 的旋转:
q = cos θ 2 + sin θ 2 ( x i + y j + z k ) q=\cos\frac{\theta}{2}+\sin\frac{\theta}{2}(x\mathbf{i}+y\mathbf{j}+z\mathbf{k}) q=cos2θ+sin2θ(xi+yj+zk)
或写成向量形式:
q = ( cos θ 2 , x sin θ 2 , y sin θ 2 , z sin θ 2 ) q=\left(\cos\frac{\theta}{2},x\sin\frac{\theta}{2},y\sin\frac{\theta}{2},z\sin\frac{\theta}{2}\right) q=(cos2θ<