转自:http://www.cnblogs.com/kfqcome/archive/2011/08/17/2143289.html
一.四元组基础
Q(x,y,z,w),其中x,y,z用来确定旋转轴,w为旋转的角度
Q=w+xi+yj+zk,i,j,k为三个虚轴的单位分量
I*j=k
J*k=i;
K*i=j;
叉乘:
c=a × b=
| i j k|
|a1 b1 c1|
|a2 b2 c2|
=(b1c2-b2c1,c1a2-a1c2,a1b2-a2b1)
c也为一个向量,且c的长度为|a||b|sin(theta),垂直于a和b所在的平面,方向由右手法则来判定,用右手的四指先表示向量a的方向,然后手指朝着手心的方向摆动到向量b的方向,大拇指所指的方向就是向量c的方向
1. 四元组相乘:
Q1=w1+x1i+y1j+z1k=(w1,v1)
Q2=w2+x2i+y2j+z2k=(w2,v2)
Q1*Q2=(w1*w2-<v1,v2>,w1*v2+w2*v1+v1xv2)
( w1+x1i+y1j+z1k)*( w2+x2i+y2j+z2k)
=w1*w2-x1*x2-y1*y2-z1*z2+
(W1*x2+x1*w2+y1*z2-z1-y2)i+
(y1*w2+w1*y2+z1*x2-x1*z2)j+
(w1*z2+z1*w2+x1*y2-y1*x2)k
对于其中的轴部分,假如v1//v2,则有v1 x v2=0(平行向量的叉乘结果为0)
2. 四元组的点乘,点乘积为数值:
Q1.*Q2=w1*w2+<v1,v2>=w1*w2+x1*x2+y1*y2+z1*z2;
3. 数乘
s为一实数,q为四元组,则有sq=qs
4. 共轭
p=(w,v),则p*=(w,-v)
(pq)*=q*p*
N(q)=w2+x2+y2+z2
q-1=q*/N(q)---------------à显然可得-1=(1,0)
二.使用四元数旋转向量
假如有一表示向量的四元组q=(w,v),对其应用旋转量p后的结果为:
q’=pqp-1=(w,v’)
从上可以看出,计算的结果q’的实部和q的实部是相等的,并且有N(v)=N(v’)
如果N(q)=1,则可以令q=(cosa,usina),u也为一个单位向量,则q’是q绕u旋转2a个弧度的结果
假如S(q)表示q的实部,则有2S(q)=q+q*
2S(pqp-1)= pqp-1+( pqp-1)*=pqp*+(pqp*)*=pqp*+pq*p*=p(q+q*)p*=2S(q)
(这里由于p是单位四元数,所以有p-1等于p*)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/65584.html