四元数叉乘意义定义 v1 v2是不是定义反了

君,已阅读到文档的结尾了呢~~
关于四元数的几何意义和物理应用(学位)
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
关于四元数的几何意义和物理应用(学位)
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口【图文】3D数学基础第10章3D中的方位与角位移课件_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
3D数学基础第10章3D中的方位与角位移课件
上传于|0|0|文档简介
&&《3D数学基础:图形与游戏开发》第10章课件
大小:6.00MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢四元数计算 - yuxikuo_1的专栏 - CSDN博客
四元数计算
Uinty3D高级
感谢一叶斋技术分享:/yiyezhai/p/3176725.html
本文基于一叶斋博客内容做更详细分析,如果错误,恳请指正。
四元数是今天的主角,它能够很方便的刻画刚体绕任意轴的旋转。四元数是一种高阶复数,四元数q表示为:
q=(x,y,z,w)=xi+yj+zk+wqxyzwxiyjzkw
其中,i,j,k满足:
i2=j2=k2=-1i2j2k21
ij=k,jk=i,ki=jijkjkikij
由于i,j,k的性质和笛卡尔坐标系三个轴叉乘的性质很像,所以可以将四元数写成一个向量和一个实数组合的形式:
q=(v?&+w)=((x,y,z),w)qvwxyzw
可以推导出四元数的一些运算性质,包括:
* 四元数乘法
q1q2=(v1→×v2→+w1v2→+w2v1→,w1w2-v1→?v2→)q1q2v1v2w1v2w2v1w1w2v1v2
* 共轭四元数
q*=(-v?&,w)qvw
* 四元数的平方模
N(q)=N(v?&)+w2NqNvw2
* 四元数的逆
q-1=q*N(q)q1qNq
四元数可以看做是向量和实数的一种更加一般的形式,向量可以视作为实部为0的四元数,而实数可以是作为虚部为0的四元数。上述四元数的运算性质也是实数或向量的运算性质的更一般的形式。
四元数可用来刻画三维空间中的旋转,绕单位向量(x,y,z)表示的轴旋转θ,可令:
q=((x,y,z)sinθ2,cosθ2)qxyzsinθ2cosθ2
刚体坐标系中的点p(P,0)(写成四元数的形式),旋转后的坐标p'为:
p′=qpq-1pqpq1
接下来我们来证明这一点。
首先,我们证明
qpq-1=(sq)p(sq)-1qpq1sqpsq1
其中s为实数。显然
(sq)p(sq)-1=sqpq-1s-1=sqp-1sqpsq1sqpq1s1sqp1
注:此处原文貌似有误,实为(sq)p(sq)-1=sqpq-1s-1=qpp-1
常数的逆为常数的倒数
此时,我们可以将q看做是单位矩阵,因为如果q不是单位矩阵,我们就可以乘以一个常数s将其化为单位矩阵。
然后,我们证明qpq^{-1}和p的模长相等
下面将q视为单位四元数:
四元数q的标量:
S(q)=(q+q*)/2Sqqq2
2S(qpq-1)=2S(qpq*)=qpq*+(qpq*)*=qpq*+qp*q*=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*=(qvq-1)k*=qvq*k*=qvvk*k*=qwkqvq1kqvqkqvvkkq
注:单位四元数vv相乘的结果为1
wk*=kv*wkkv
上面的式子拆分成实部和虚部,虚部表明w与-k的平面和k与-v的平面重合,实部表明w和-k之间的夹角与k和-v之间的夹角相等,都是π-σ/2。这就说明了w与v的夹角是σ,原命题就得证了。
我的热门文章
即使是一小步也想与你分享四元数小总结
四元数小总结
编辑:www.fx114.net
本篇文章主要介绍了"四元数小总结",主要涉及到四元数小总结方面的内容,对于四元数小总结感兴趣的同学可以参考一下。
四元数记法:
一个四元数包含一个标量分量和一个3D向量分量。记标量为w,记向量为v或分开的x,y,z。如下:
[w,(x,y,z)]
四元数与复数:
四元数扩展了复数系统 ,它使用三个虚部i,j,k。它们的关系如下:
i2=j2=k2=-1
ij=k,ji=-k
jk=i,kj=-i
ki=j,ik=-j
一个四元数[w,(x,y,z)]定义了复数 w+xi+yj+zk。
四元数和轴-角对:
四元数能被解释为角位移的轴-角对方式。其公式为下:
设向量n为旋转轴,&为绕轴旋转的量。
q=[cos(&/2) &sin(&/2)n]
& =[cos(&/2) &(sin(&/2)nx &sin(&/2)ny &sin(&/2)nz)]
负四元数:
-q=[-w (-x -y -z)]=[-w -v]
q和-q代表的实际角位移是相同的,很奇怪吧!如果我们将&加上360度的倍数,不会改变q代表的角位移,但它使q的四个分量变负了。因此,3D中的任意角位移都有两种不同的四元数表示方式,它们互相为负。
单位四元数:
几何上存在2个单位四元数:[1,0]和[-1,0]。它们的意义是:当旋转角为360度的整数倍时,方位并没有改变,并且旋转轴也是无关紧要的。
数学上只有一个单位四元数:[1,0]。任意四元数q乘以单位四元数[1,0]仍为q。
四元数的模:
公式如下:
||q||=||[w (x y z)]||=sqrt(w2+x2+y2+z2)
  & =||[w v]||=sqrt(w2+||v||2)
几何意义:
||q||=sqrt(cos(&/2)2+sin(&/2)2||n||2)
若n为单位向量,则:||q||=1
四元数共轭:
q*=[w -v]=[w (-x -y -z)]
四元数的逆:
q-1=q*/||q||
但我们只使用单位四元数,故q-1=q*
几何解释:使向量v反向,则旋转方向也反向了。因此q绕轴旋转&角,而q*沿相反的方向旋转相同的角度。
四元数乘法(叉乘):
[w1 &v1][w2 &v2]=[w1w2-v1v2 &w1v2+w2v1+v2&v1]
四元数叉乘满足结合律但不满足交换律:
(ab)c=a(bc)
四元数乘积的模等于模的乘积:
||q1q2||=||q1|| ||q2||
四元数乘积的逆等于各个四元数的逆以相反的顺序相乘:
(ab)-1=b-1a-1
如何用四元数将3D点绕轴旋转:
让我们&扩展&一个标准3D点(x,y,z)到四元数空间,通过定义四元数p=[0, (x,y,z)]即可。设q为我们讨论的旋转四元数形式[cos(&/2) &sin(&/2)n],n为旋转轴,单位向量,&为旋转角。你会惊奇地发现,执行下面乘法可使3D点p绕n旋转:
四元数乘法的优势在哪?对点p先执行a旋转再执行b旋转:
p'=b(apa-1)b-1=(ba)p(a-1b-1)=(ba)p(ba)-1
注意,先进行a旋转再进行b旋转等价于执行乘积ba代表的单一旋转。因此,四元数乘法可用来连接多次旋转,这和矩阵乘法效果一样。
四元数的&差&:
定义:从一个方位到另一个方位的角位移。
如给定方位a和方位b,求a到b的角位移d。用四元数表示为:ad=b &=& &d=a-1b
四元数点乘:
q1&q2=[w1 &v1]&[w2 &v2]=w1w2+v1&v2
几何解释:类似于向量点乘的几何解释,两四元数点乘绝对值越大,其代表的角位移越相似。
四元数的对数:
首先,令&=&/2,||n||=1,则q=[cos& &nsin&]=[cos& &xsin& &ysin& & zsin&],公式如下:
log q=log[cos& &nsin&]=[0 &&n]
注意log q的结果,它一般不是单位四元数。
四元数的指数:
设四元数p的形式为[0, &n],n为单位向量:
p=[0 &&n]=[0 &(&x &&y &&z)]
公式如下:
exp p=exp([0 &&n])=[cos& &nsin&]
根据定义,exp p问题返回单位四元数。
四元数指数运算为四元数对数运算的逆运算:
exp(log q)=q
四元数与标量相乘:
kq=k[w &v]=[kw &kv]
  =k[w &(x &y &z)]=[kw &kx &ky &kz]
四元数求冥:
qt=exp(tlog q)
几何意义:对数运算log q提取了轴n和角度&;接着和指数t进行标量乘时,结果是&乘以t;最后,指数运算&撤消&了对数运算,以t&和n重新计算w和v。
求四元数冥的代码如下:
/// &summary&
/// 四元数求冥
/// &/summary&
/// &param name="e"&指数&/param&
/// &param name="w,x,y,z"&四元数输入,输出&/param&
static void Calc(float e, ref float w, ref float x, ref float y, ref float z)
// 检查单位四元数的情况,避免除零
if (Mathf.Abs(w) & 0.9999f)
10
// 提取半角(&/2)
12
float alpha = Mathf.Acos(w);
13
// 计算新的alpha值
14
float newAlpha = alpha *
15
// 计算数的w值
16
w = Mathf.Cos(newAlpha);
17
float multi = Mathf.Sin(newAlpha) / Mathf.Sin(alpha);
18
// 计算新的xyz值
19
四元数插值&&"slerp":
&当今3D数学中四元数存在的理由是由于一种称作slerp的运算,即球面线性插值(Spherical Linear Interpolation)。slerp运算非常有用,因为它可以在两个四元数之间平常插值。slerp插值避免了欧拉角插值的所有问题(如万向锁)。
设开始与结束的四元数为q0,q1,插值变量设为t,t在[0, 1]之间变化 。则slerp函数定义为: slerp(q0,q1,t)
计算此函数的思路如下:
lerp(a0,a1,t)=a0+t△a
四元数中,
1. 计算差值:q0△q=q1 &=& &△q=q0-1q1
2. 取插值的一部分,应用求冥的办法,即(△q)t
3. 初始值加上插值的一部分,应用四元数乘法。
综上,公式如下:
slerp(q0,q1,t)=q0(q0-1q1)t
这是理论上的公式,实践中,将使用更有效的一种办法。
转载请注明出处:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:

我要回帖

更多关于 stlink v2接口定义 的文章

 

随机推荐