四元数
Quaternion
是爱尔兰数学家威廉·哈密顿在1843年发明的一种数学概念,是复数的自然推广。
- 复数将实数轴扩展到了二维平面
- 而四元数则将复数系扩展到了四维空间
一种数学上的代数结构,用于在三维空间中表示旋转和方向。
- 欧拉角描述旋转的结果
- 四元数描述旋转的过程
一、基本定义
一个四元数
其中
被称为四元数的实部或标量部。 被称为虚部或向量部。[1]
实数轴和三个虚轴都相互垂直,符合右手定则:
由这个核心规则可以推导出它们之间的乘法关系:单位四元数的乘法表示四维空间的双旋转
以虚数
而
对于四元数中一般的单位向量
任意一个向量在三维空间中绕向量
二、基本运算
设有两个四元数
加法: 各分量相加
乘法: 利用分配律和虚数单位的乘法规则展开。如果用向量部表示
共轭 (Conjugate): 将虚部取反
范数 (Norm): 定义为
逆 (Inverse): 对于非零四元数
三、用四元数表示旋转
复数乘除法的几何意义是来描述二维的旋转,乘以一个复数,复数的模表示伸缩,复数的角度表示顺时针的旋转角度:如果想要将一个向量
四元数描述三维的旋转类似,向量
这是四元数最重要的应用。三维空间中的一个旋转操作可以通过一个单位四元数 (Unit Quaternion) 来表示。单位四元数是指范数为 1 的四元数,即
一个绕单位向量轴
要将这个旋转应用于空间中的一个点(或向量)
旋转后的点
计算结果
直观化展示:https://eater.net/quaternions
四、优点与应用
与欧拉角和旋转矩阵相比,使用四元数表示旋转有几个关键优势:
- 避免万向节死锁 (Gimbal Lock): 这是欧拉角表示法的一个致命缺陷,而四元数不存在这个问题。
- 计算效率高: 四元数乘法比矩阵乘法需要更少的计算量。
- 存储紧凑: 只需要 4 个浮点数,而
旋转矩阵需要 9 个。 - 平滑插值: 可以使用球面线性插值 (Slerp) 在两个旋转之间进行平滑、自然的插值,这在动画和机器人轨迹规划中非常有用。
由于这些优势,四元数被广泛应用于:
- 计算机图形学和游戏引擎 (如 Unity, Unreal Engine)
- 机器人学和无人机姿态控制
- 航空航天器导航
四元数在计算机图形学、机器人学、航天器姿态控制等领域有广泛应用,因为它们可以方便地进行旋转的插值(Slerp)和避免万向节锁(Gimbal Lock)问题。
五、与李群的关系
所有单位四元数的集合在四元数乘法下构成一个群,这个群同构于特殊酉群