四元数与旋转——学习笔记(二)

来源:互联网 发布:淘宝搜索你会回来谢我 编辑:程序博客网 时间:2024/06/07 13:40

联系方式:860122112@qq.com

四元数与旋转——学习笔记(一)
四元数与旋转——学习笔记(二)
四元数与旋转——学习笔记(三)

三、四元数旋转算子

四元数原本是表示四维空间R4的,而在对三维空间R3的向量v=(xv,yv,zv)进行运算时使用的是纯四元数,该四元数的实数部分为0。因此向量v的四元数表示为xvi^+yvj^+zvk^0<xv,yv,zv>

定义单位四元数 q 对向量 v 作用的算子为
(10)

Lq(v)==qvq(q20q2)v+2(qv)q+2q0(q×v)

此算子有两个性质:

  1. 算子Lq不改变向量v的模长
    Lq(v)===qvq|q|v|q|v
  2. v是沿着q的方向,则算子Lq不会改变v。证明,假设v=kq,则:
    qvq====q(kq)q(q20q2)kq+2(qkq)q+2q0(q×kq)k(q20+q2)qkq

根据这两个性质,可以把Lq想象成v绕着q旋转。Lq在三维空间R3是线性的,即对于给定的任意两个向量v1,v2R3,任意两个实数a1,a2R有:

Lq(a1v1+a2v2)=a1Lq(v1)+a2Lq(v2)

定理1
对于给定的任意单位四元数
(11)

q=q0+q=cosθ2+u^sinθ2

和任意向量vR3,算子
Lq(v)=qvq
等价于vu^为轴旋转了θ

证明:
给定一个向量vR3,将它分解成v=a+n,其中 a 是方向沿着向量 q 的方向的分量,而 n 是与 q 垂直的分量。由前面的性质可知 aLq变换下保持不变,而 n 是绕 q 旋转了角度θ。因为Lq是线性的,实际上可以将qvq看成是v 是绕 q 旋转了角度θ
Lq主要作用在与之垂直的分量 n 上,因此
(12)

Lq(n)====(q20q2)n+2(qn)q+2q0(q×n)(q20q2)n+2q0(q×n)(q20q2)n+2q0q(u^×n)(q20q2)n+2q0qn

其中u^=q/qn=u^×nnn 的模长相等,即
n=n×u^=nu^sinπ2=n

根据定理1(11)给定的任意四元数q,有
Lq(n)==(cos2θ2sin2θ2)n+2cosθ2sinθ2ncosθn+sinθn

即结果向量是 nnn 构成的平面上旋转了 θ,旋转轴垂直于该平面,如下图所示。
这里写图片描述

注意旋转了 2π+θ 和旋转了 θ 是一样的,即Lq=(q)v(q)=qvq=Lq
将(11)带入(10)得到v绕轴 u^ 旋转 θ 后的向量
(13)

Lq(n)==(cos2θ2sin2θ2)v+2(u^sinθ2v)u^sinθ2+2cosθ2(u^sinθ2×v)cosθv+(1cosθ)(u^v)u^+sinθ(u^×v)

(10)可以重新写成
Lq(v)=((q20q2)I3×3+2qqT+2q0q×)v

其中I3×3是单位矩阵,且
q×=0q3q2q30q1q2q10

所以 vq 旋转的旋转矩阵可以定义为
R=(q20q2)I3×3+2qqT+2q0q×

定理2
对于给定的任意单位四元数

q=q0+q=cosθ2+u^sinθ2

和任意向量vR3,算子
Lq(v)=qv(q)=qvq
等价于v不动,坐标系以u^为轴旋转了 θ
或者等价于坐标系不动,vu^为轴旋转了 θ

四、四元数旋转算子序列

假设 pq 是两个单位四元数,向量 u 首先通过 Lp 得到向量 vv 又通过 Lq 得到向量 w,这两次连续转换(旋转)可以写成:

w=====Lq(v)qvqq(pup)qqpu(qp)Lqp(u)

因为 pq 是两个单位四元数,所以 qp 也是单位四元数。wu 先绕 p 旋转再绕 q 旋转得到,也可以看成绕四元数 qp 的向量旋转后得到。注意,先使用旋转的四元数在右边。同理 u 不动,坐标系旋转时 Lq(Lp(u))=L(pq)(u),同时注意 pq 的顺序和前面的相反。

参考文献
Yan-Bin Jia. Quaternion and Rotation


原创粉丝点击