四元数

Quaternion
是爱尔兰数学家威廉·哈密顿在1843年发明的一种数学概念,是复数的自然推广。

一种数学上的代数结构,用于在三维空间中表示旋转和方向。

一、基本定义

一个四元数 q 可以表示为一个有序实数组 (w,x,y,z),或者更常见的形式:

q=w+xi+yj+zk

其中 w,x,y,z 是实数,而 i,j,k 是三个虚数单位

实数轴和三个虚轴都相互垂直,符合右手定则:

i2=j2=k2=ijk=1

由这个核心规则可以推导出它们之间的乘法关系:单位四元数的乘法表示四维空间的双旋转

ij=k,jk=i,ki=jji=k,kj=i,ik=j

Pasted image 20250514235629.png

以虚数 i 为例,i 的作用相当于将 jk 平面上的向量逆时针旋转 90

ij=k,ik=j,i(j)=k,i(k)=j

i 如果作用于 i 本身,则进入实数范围 i2=1

对于四元数中一般的单位向量 vv 左乘,相当于将与 v 垂直的平面逆时针旋转 90,而将沿着 v 的分量将进入实数范围,跑出三维虚空间

q=cosθ+vsinθq1=cosθvsinθ

任意一个向量在三维空间中绕向量 v 旋转 2θ 角:x=qxq1

二、基本运算

设有两个四元数 q1=w1+x1i+y1j+z1kq2=w2+x2i+y2j+z2k

加法: 各分量相加

q1+q2=(w1+w2)+(x1+x2)i+(y1+y2)j+(z1+z2)k

乘法: 利用分配律和虚数单位的乘法规则展开。如果用向量部表示 q1=(w1,v1)q2=(w2,v2),乘法可以更紧凑地表示为:(其中 是点积,× 是叉积)

q1q2=(w1w2v1v2,w1v2+w2v1+v1×v2)

共轭 (Conjugate): 将虚部取反

q=wxiyjzk

范数 (Norm): 定义为

|q|=w2+x2+y2+z2|q1q2|=|q1||q2|

逆 (Inverse): 对于非零四元数 q,其逆为

q1=q|q|2

三、用四元数表示旋转

复数乘除法的几何意义是来描述二维的旋转,乘以一个复数,复数的模表示伸缩,复数的角度表示顺时针的旋转角度:如果想要将一个向量 x+iy 顺时针旋转 θ 角,只需要乘以模为 1 的向量 cosθ+isinθ,得到旋转后的向量 (cosθ+isinθ)(x+iy)

四元数描述三维的旋转类似,向量 p=(x1i,y1j,z1k), 四元数 q=w0+x0i+y0j+z0k

qpq1=(w0+x0i+y0j+z0k)(x1i,y1j,z1k)(w0x0iy0jz0k)

这是四元数最重要的应用。三维空间中的一个旋转操作可以通过一个单位四元数 (Unit Quaternion) 来表示。单位四元数是指范数为 1 的四元数,即 |q|=1

一个绕单位向量轴 u=(ux,uy,uz) 旋转角度 θ 的操作,可以由以下单位四元数 q 表示:

q=(cosθ2,sinθ2u)=cosθ2+(uxsinθ2)i+(uysinθ2)j+(uzsinθ2)k

要将这个旋转应用于空间中的一个点(或向量) p=(px,py,pz),我们首先将 p 表示为一个纯四元数(实部为 0) p=0+pxi+pyj+pzk

旋转后的点 p 通过以下“三明治”乘法计算得到:

p=qpq1

计算结果 p 的实部将为 0,其虚部就是旋转后的向量坐标。

直观化展示:https://eater.net/quaternions

四、优点与应用

与欧拉角和旋转矩阵相比,使用四元数表示旋转有几个关键优势:

  1. 避免万向节死锁 (Gimbal Lock): 这是欧拉角表示法的一个致命缺陷,而四元数不存在这个问题。
  2. 计算效率高: 四元数乘法比矩阵乘法需要更少的计算量。
  3. 存储紧凑: 只需要 4 个浮点数,而 3×3 旋转矩阵需要 9 个。
  4. 平滑插值: 可以使用球面线性插值 (Slerp) 在两个旋转之间进行平滑、自然的插值,这在动画和机器人轨迹规划中非常有用。

由于这些优势,四元数被广泛应用于:

四元数在计算机图形学、机器人学、航天器姿态控制等领域有广泛应用,因为它们可以方便地进行旋转的插值(Slerp)和避免万向节锁(Gimbal Lock)问题。

五、与李群的关系

所有单位四元数的集合在四元数乘法下构成一个,这个群同构于特殊酉群 SU(2)。存在一个 2 对 1 的满群同态从单位四元数群(或 SU(2))到三维旋转群特殊正交群 SO(3)。这揭示了三维旋转与量子力学中自旋 1/2 粒子(由 SU(2) 描述)的深刻数学联系。


  1. Vector 的名词在此首次提出,不过现代意义主要指向量 ↩︎