1. 四元数的概念
四元数可以看成是复数的扩充,它有三个虚部,形式如下:
q=w+xi+yj+zkorq=s+v
其中
i2=j2=k2=−1ij=−ji=kjk=−jk=iki=−ki=j
四元数常见概念
1)四元数的模
∣q∣=w2+x2+y2+z2
2)四元数常见运算
p1=[s1,v1]=(w1,x1,y1,z1)Tp2=[s2,v2]=(w2,x2,y2,z2)T
-加法
p1+p2=s1+s2,v1+v2=w1+w2+(x1+x2)i+(y1+y2)j+(z1+z2)k
-乘法
p1p2=s1s2−v1v2+s1v2+s2v1+v1×v2=⎝⎛w1w2−x1x2−y1y2−z1z2w1x2+x1w2+y1z2−z1y2w1y2−x1z2+y1w2+z1x2w1z2+x2y2−y1x2+z1w2⎠⎞
-点积(内积)
p1⋅p2=w1w2+v1v2=w1w2+x1x2+y1y2+z1z2
-叉乘(外积)
p1×p2=2p1p2−p2p2=v1×v2
-共轭
p1∗=s1−v1p1p1∗=w12+x12+y12+z12
-逆
p1−1=∥p1∥2p1∗p1p1−1=p1−1p1=1
3)单位四元数
满足下式,
w2+x2+y2+z2=1
2. 四元数与刚性旋转
单位四元数(Unit quaternion)可以用于表示三维空间里的旋转。它与常用的另外两种表示方式(三维正交矩阵和欧拉角)是等价的,但是避免了欧拉角表示法中的万向锁问题。比起三维正交矩阵表示,四元数表示能够更方便地给出旋转的转轴与旋转角。
三维空间中的旋转可以被认为是一个泛函ϕ从R3→R3的映射。如果ϕ要满足一个刚性旋转需要满足如下三点,加上P是三维空间中的一点可用纯四元数表示
P=[0,v]=xi+yj+zk
- 旋转后向量长度保持不变
∥ϕ(P)∥=∥P∥
- 旋转后角度不变
ϕ(P1)⋅ϕ(P2)=P1⋅P2
- handedness保持不变(即左右手坐标系准则不变)
ϕ(P1)×ϕ(P2)=P1×P2
并且ϕ(s+v)=s+ϕ(v),又因为P中s=0,所以,
ϕ(P1)⋅ϕ(P2)=ϕ(P1P2)
当
ϕq(P)=qPq−1
时满足上述条件,即可以表示刚性旋转,其中q是单位四元数。将q=w+xi+yj+zk带入上式即可得到旋转矩阵
Rq=⎝⎛1−2y2−2z22xy+2wz2xz−2wy2xy−2wz1−2x2−2z22yz+2wx2xz+2wy2yz−2wx1−2x2−2y2⎠⎞