四元数

参考:(1)四元数(Quaternions) - 知乎 (zhihu.com);(2)四元数——旋转 - 知乎 (zhihu.com);(3⭐)四元数和旋转(Quaternion & rotation) - 知乎 (zhihu.com)

说明:文中所有用 ^ 标记的为四元数,用 标记的为普通向量;i 为虚数单位,i,j,k 为四元数单位。

1. 基本性质

定义四元数

(1)q^=qw+qii+qjj+qkk=(qi,qj,qk,qw)=(qv,qw)

其中 qw,qi,qj,qk 均为实数。其中 i,j,k 满足:

(2)i2=j2=k2=1ij=ji=kjk=kj=iki=ik=j

加、减、乘法由(1)(2)可推知。注意乘法不可交换

定义四元数的共轭

(3)q^=(qv,qw)

四元数的共轭有关系(不可交换线性算子的必然结果):

(4)(p^q^)=q^p^

(5)||q^||=q^q^=q^q^

易知模必为正实数。

四元数也可看作是一个线性算子,故其有:q^1q^=q^q^1=1,利用式(4)可得:

(6)q^1=1||q^||2q^=1q^q^q^

考虑 i 与单位四元数 q^v 的关系:

||q^v||=1q^vq^v=q^v2=1q^v2=i2=1

基于此拓展欧拉公式 eiθ=cosθ+isinθ。任何一个单位四元数都可以写作 cosθ+q^vsinθ,其中 q^v 为单位纯四元数。

(7)cosθ+q^vsinθ=eq^vθ

于是自然地得到四元数的对数:

(8)lnq^=lnc(cosθ+q^vsinθ)=lnc+q^vθ

2.四元数与旋转

2.1 胡尔韦兹(Hurwitz)定理

赋范可除性代数只能同构于实数、复数、四元数、八元数。

赋范可除性代数:代数中的元素满足 ||ab||=||a||||b||,其中 为该空间对应的乘法。四元数是满足该性质的。

这个性质别看简单,但基本上算是非常核心的一个性质。为什么我要用四元数表示旋转?旋转最本质的特点是什么,就是不改变相对距离,你转个手臂不可能转个60度手变长了。用数学公式说明,就是假如x是单位四元数,当我一个任意向量y通过x进行旋转后,模长是不会发生变化的。因此,赋范可除代数的应用就在这。

(2)

2.2 矢量在空间中的旋转

先考虑一个矢量 p 绕轴 a(单位向量)旋转 θ

(9)p=pcosθ+(a×p)sinθ+(ap)a(1cosθ)

证明:记 p 沿 a 方向的分量为 p//=(ap)ap=pp//

p=p//+pcosθ+(a×p)sinθ

代入即得。QED

2.3 四元数表示旋转

旋转函数 ϕ 总应该满足如下三个性质:

  1. 长度不变||ϕ(A)||=||A||

  2. 夹角不变ϕ(A)ϕ(B)=AB

  3. 手性不变ϕ(A)×ϕ(B)=A×B

满足这三条性质的函数即为旋转函数。这里的 A,B 不打箭头,是因为它们即可以是矢量,也可以是纯四元数。仿照矢量的点乘和叉乘,定义存四元数的点乘和叉乘。

(10)p^q^=piqi+pjqj+pkqkp^×q^=|ijkpipjpkqiqjqk|

容易推导,纯四元数之间的乘法:

(11)p^q^=p^q^+p^×q^

考虑函数 ϕq^(p^)=q^p^q^1,它(可以)是一个纯四元数到纯四元数的映射。

证明:若 p^ 是纯四元数,p^+p^=0

ϕq^(p^)+ϕq^(p^)=q^p^q^1+(q^p^q^1)=q^p^q^1+(q^1)p^q^=q^p^q^1+q^p^q^1=q^(p^+p^)q^1=0

ϕq^(p^) 也为纯四元数。QED

同时 ϕq^ 也满足

1.   ||ϕq^(p^)||=||q^||||p^||||q^1||=||p^||2.   ϕq^(p^)ϕq^(r^)=q^p^q^1q^r^q^1=q^p^r^q^1=ϕq^(p^r^)

上1式为长度不变;上2式中即包含了夹角不变和手性不变,因为:

ϕq^(p^)ϕq^(r^)=ϕq^(p^)ϕq^(r^)+ϕq^(p^)×ϕq^(r^)ϕq^(p^r^)=ϕq^(p^r^+p^×r^)=p^r^+ϕq^(p^×r^)

点乘处的结果为实数,叉乘出的结果为纯四元数,它们对应相等,故:

ϕq^(p^)ϕq^(r^)=ϕq^(p^r^)   {ϕq^(p^)ϕq^(r^)=p^r^ϕq^(p^)×ϕq^(r^)=ϕq^(p^×r^)

上面诸多性质表明,函数 ϕq^(p^)=q^p^q^1 表示对纯四元数的一个旋转。

2.4 已知旋转确定四元数

显然,对 q^ 做一个拉伸,不会改变 ϕq^ ,即 ϕq^=ϕαq^。故方便起见,选择 q^ 为单位四元数。则有:

q^=cosθ+q^vsinθ

其中 q^v 为单位纯四元数。代入 ϕq^ 的表达式(p^ 为纯四元数):

ϕq^(p^)=q^p^q^1=(cosθ+q^vsinθ)p^(cosθq^vsinθ)=[cosθp^+sinθ(q^vp^+q^v×p^)](cosθq^vsinθ)=...=(cos2θsin2θ)p^+2cosθsinθ q^v×p^+2sin2θ(p^q^v) q^v(12)=cos2θ p^+sin2θ q^v×p^+(1cos2θ) (p^q^v) q^v

对比式(12)与式(9),即知 ϕq^ 为绕轴 q^v 旋转 2θ 的函数。

2.5 转化旋转函数为矩阵

(13)q^v×p^=(0qvkqvjqvk0qviqvjqvi0)(pipjpk)
(14)(p^q^v)q^v=(qvi2qviqvjqviqvkqviqvjqvj2qvjqvkqviqvkqvkqvjqvk2)(pipjpk)

将(13)(14)代入(12)中,并记 q^=(cosθ+sinθq^v)=(x,y,z,w),整理得:

ϕq^(p^)=q^p^q^1=(12y22z22xy2zw2xz+2yw2xy+2zw12x22z22yz2xw2xz2yw2yz+2xw12x22y2)(pipjpk)(15)=Rq^ p^

以上就四元数旋转函数对应的旋转矩阵。