四元数计算

感谢一叶斋技术分享:http://www.cnblogs.com/yiyezhai/p/3176725.html

本文基于一叶斋博客内容做更详细分析,如果错误,恳请指正。

四元数

四元数是今天的主角,它能够很方便的刻画刚体绕任意轴的旋转。四元数是一种高阶复数,四元数q表示为:

q=(x,y,z,w)=xi+yj+zk+w qxyzwxiyjzkw

其中,i,j,k满足:

i2=j2=k2=1 i2j2k21

ij=k,jk=i,ki=j ijkjkikij

由于i,j,k的性质和笛卡尔坐标系三个轴叉乘的性质很像,所以可以将四元数写成一个向量和一个实数组合的形式:

q=(v⃗ +w)=((x,y,z),w) qvwxyzw

可以推导出四元数的一些运算性质,包括:

* 四元数乘法

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

* 共轭四元数

q=(v⃗ ,w) qvw

* 四元数的平方模

N(q)=N(v⃗ )+w2 NqNvw2

* 四元数的逆

q1=qN(q) q1qNq

四元数可以看做是向量和实数的一种更加一般的形式,向量可以视作为实部为0的四元数,而实数可以是作为虚部为0的四元数。上述四元数的运算性质也是实数或向量的运算性质的更一般的形式。

四元数可用来刻画三维空间中的旋转,绕单位向量(x,y,z)表示的轴旋转θ,可令:

q=((x,y,z)sinθ2,cosθ2) qxyzsinθ2cosθ2

刚体坐标系中的点p(P,0)(写成四元数的形式),旋转后的坐标p'为:

p=qpq1 pqpq1

接下来我们来证明这一点。

首先,我们证明

qpq1=(sq)p(sq)1 qpq1sqpsq1

其中s为实数。显然

(sq)p(sq)1=sqpq1s1=sqp1 sqpsq1sqpq1s1sqp1

注:此处原文貌似有误,实为(sq)p(sq)1=sqpq1s1=qpp1

常数的逆为常数的倒数

此时,我们可以将q看做是单位矩阵,因为如果q不是单位矩阵,我们就可以乘以一个常数s将其化为单位矩阵。

然后,我们证明qpq^{-1}和p的模长相等

下面将q视为单位四元数:

q1=q q1q

四元数q的标量:

S(q)=(q+q)/2 Sqqq2

那么:

2S(qpq1)=2S(qpq)=qpq+(qpq)=qpq+qpq=q(p+p)q=q2S(p)q=2S(p)
注:S(q)为标量,q与q的共轭相乘为1,q同乘pq-1

最后,我们证明

p=qpq pqpq

如图所示,u为旋转轴,旋转角度为σ,向量v旋转到w处。旋转到σ/2处为k(图中未标出)。

下面也用相同的字母指代四元数,如u就表示向量u的四元数形式((ux,uy,uz),0)。

首先,令u方向上的单位向量为u(为了方便,命名不变,后面的u都是指旋转轴方向的单位四元数),那么根据q的定义,参见四元数乘法法则:

q=(u⃗ sinθ2,cosθ2)=(v⃗ ×k⃗ ,v⃗ k⃗ )=(v⃗ ,0)(k⃗ ,0)=kv qusinθ2cosθ2vkvkv0k0kv

注:单位向量点积:a·b表示b在a上的投影。单位向量的差积:a*b表示垂直于a和b向量平面的向量

原文有误:实为(k,0)(-v,0),才能得到kv*

现在令

w=qvq wqvq

如果能证明w与v的夹角是σ,那么就说明w确实是v旋转σ得到的,整个命题就得证了。

注意v,k和w都是实部为0的单位四元数,表示单位向量,我们有:

wk=(qvq1)k=qvqk=qvvkk=q wkqvq1kqvqkqvvkkq

注:单位四元数vv相乘的结果为1

所以

wk=kv wkkv

上面的式子拆分成实部和虚部,虚部表明w与-k的平面和k与-v的平面重合,实部表明w和-k之间的夹角与k和-v之间的夹角相等,都是π-σ/2。这就说明了w与v的夹角是σ,原命题就得证了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值