联系方式:[email protected]
四元数与旋转——学习笔记(一)
四元数与旋转——学习笔记(二)
四元数与旋转——学习笔记(三)
三、四元数旋转算子
四元数原本是表示四维空间R4的,而在对三维空间R3的向量v=(xv,yv,zv)进行运算时使用的是纯四元数,该四元数的实数部分为0。因此向量v的四元数表示为xvi^+yvj^+zvk^或 0<xv,yv,zv>。
定义单位四元数 q 对向量 v 作用的算子为
(10)
Lq(v)==qvq∗(q20−∥q∥2)v+2(q⋅v)q+2q0(q×v)
此算子有两个性质:
- 算子Lq不改变向量v的模长
∥Lq(v)∥===∥qvq∗∥|q|⋅∥v∥⋅|q∗|∥v∥
- 若v是沿着q的方向,则算子Lq不会改变v。证明,假设v=kq,则:
qvq∗====q(kq)q∗(q20−∥q∥2)kq+2(q⋅kq)q+2q0(q×kq)k(q20+∥q∥2)qkq
根据这两个性质,可以把Lq想象成v绕着q旋转。Lq在三维空间R3是线性的,即对于给定的任意两个向量v1,v2∈R3,任意两个实数a1,a2∈R有:
Lq(a1v1+a2v2)=a1Lq(v1)+a2Lq(v2)
定理1
对于给定的任意单位四元数
(11)
q=q0+q=cosθ2+u^sinθ2
和任意向量
v∈R3,算子
Lq(v)=qvq∗
等价于
v以
u^为轴旋转了
θ。
证明:
给定一个向量v∈R3,将它分解成v=a+n,其中 a 是方向沿着向量 q 的方向的分量,而 n 是与 q 垂直的分量。由前面的性质可知 a 在Lq变换下保持不变,而 n 是绕 q 旋转了角度θ。因为Lq是线性的,实际上可以将qvq∗看成是v 是绕 q 旋转了角度θ。
Lq主要作用在与之垂直的分量 n 上,因此
(12)
Lq(n)====(q20−∥q∥2)n+2(q⋅n)q+2q0(q×n)(q20−∥q∥2)n+2q0(q×n)(q20−∥q∥2)n+2q0∥q∥(u^×n)(q20−∥q∥2)n+2q0∥q∥n⊥
其中
u^=q/∥q∥,
n⊥=u^×n,
n⊥ 与
n 的模长相等,即
∥n⊥∥=∥n×u^∥=∥n∥⋅∥u^∥sinπ2=∥n∥
根据定理1(11)给定的任意四元数
q,有
Lq(n)==(cos2θ2−sin2θ2)n+2cosθ2sinθ2n⊥cosθn+sinθn⊥
即结果向量是
n 在
n 和
n⊥ 构成的平面上旋转了
θ,旋转轴垂直于该平面,如下图所示。
注意旋转了 2π+θ 和旋转了 θ 是一样的,即L−q=(−q)v(−q)∗=qvq∗=Lq
将(11)带入(10)得到v绕轴 u^ 旋转 θ 后的向量
(13)
Lq(n)==(cos2θ2−sin2θ2)v+2(u^sinθ2⋅v)u^sinθ2+2cosθ2(u^sinθ2×v)cosθ⋅v+(1−cosθ)(u^⋅v)u^+sinθ⋅(u^×v)
(10)可以重新写成
Lq(v)=((q20−∥q∥2)I3×3+2qqT+2q0q×)v
其中
I3×3是单位矩阵,且
q×=⎡⎣⎢0q3−q2−q30q1q2−q10⎤⎦⎥
所以
v 绕
q 旋转的旋转矩阵可以定义为
R=(q20−∥q∥2)I3×3+2qqT+2q0q×
定理2
对于给定的任意单位四元数
q=q0+q=cosθ2+u^sinθ2
和任意向量
v∈R3,算子
L∗q(v)=q∗v(q∗)∗=q∗vq
等价于
v不动,坐标系以
u^为轴旋转了
θ。
或者等价于坐标系不动,
v以
u^为轴旋转了
−θ。
四、四元数旋转算子序列
假设 p 和 q 是两个单位四元数,向量 u 首先通过 Lp 得到向量 v,v 又通过 Lq 得到向量 w,这两次连续转换(旋转)可以写成:
w=====Lq(v)qvq∗q(pup∗)q∗qpu(qp)∗Lqp(u)
因为
p 和
q 是两个单位四元数,所以
qp 也是单位四元数。
w 是
u 先绕
p 旋转再绕
q 旋转得到,也可以看成绕四元数
qp 的向量旋转后得到。
注意,先使用旋转的四元数在右边。同理
u 不动,坐标系旋转时
Lq∗(Lp∗(u))=L(pq)∗(u),同时
注意 pq 的顺序和前面的相反。
参考文献
Yan-Bin Jia. Quaternion and Rotation