四元数及旋转

四元数及旋转

ID:20122789

大小:55.00 KB

页数:4页

时间:2018-10-08

四元数及旋转_第1页
四元数及旋转_第2页
四元数及旋转_第3页
四元数及旋转_第4页
资源描述:

《四元数及旋转》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ComputerGraphics:四元數與旋轉在討論「四元數」之前,我們來想想對三維直角座標而言,在物體旋轉會有何影響,可以擴充三維直角座標系統的旋轉為三角度系統(Three-anglesystem),在GameProgrammingGems中有提供這麼一段:Quaternionsdonotsufferfromgimballock.Withathree-angle(roll,pitch,yaw)system,therearealwayscertainorientationsinwhichthereisnos

2、implechangetothetrheevaluestorepresentasimplelocalroation.Youoftenseethisrotationhaving"pitchedup"90degreewhenyouaretryingtospecifyalocalyawforright.簡單的說,三角度系統無法表現任意軸的旋轉,只要一開始旋轉,物體本身即失去對任意軸的自主性。四元數(Quaternions)為數學家Hamilton於1843年所創造的,您可能學過的是複數,例如:a+bi這樣的數,其

3、中i*i=-1,Hamilton創造了三維的複數,其形式為w+xi+yj+zk,其中i、j、k的關係如下:i2=j2=k2=-1i*j=k=-j*ij*k=i=-k*jk*i=j=-i*k假設有兩個四元數:q1=w1+x1i+y1j+z1kq2=w2+x2i+y2j+z2k四元數的加法定義如下:q1+q2=(w1+w2)+(x1+x2)i+(y1+y2)j+(z1+z2)k四元數的乘法定義如下,利用簡單的分配律就是了:q1*q2=(w1*w2-x1*x2-y1*y2-z1*z2)+(w1*x2+x1*w2+

4、y1*z2-z1*y2)i+(w1*y2-x1*z2+y1*w2+z1*x1)j+(w1*z2+x1*y2-y1*x2+z1*w2)k由於q=w+xi+yj+zk中可以分為純量w與向量xi+yj+zk,所以為了方便表示,將q表示為(S,V),其中S表示純量w,V表示向量xi+yj+zk,所以四元數乘法又可以表示為:q1*q2=(S1+V1)*(S2+V2)=S1*S2-V1.V2+V1XV2+S1*V2+S2*V1其中V1.V2表示向量內積,V1XV2表示向量外積。定義四元數q=w+xi+yj+zk的nor

5、m為:N(q)=

6、q

7、=x2+y2+z2+w2滿足N(q)=1的四元數集合,稱之為單位四元數(Unitquaternions)。定義四元數定義四元數q=w+xi+yj+zk的共軛(Conjugate)為:q*=定義四元數q=w-xi-yj-zk=[S-V]定義四元數的倒數為:1/q=q*/N(q)說明了一些數學,您所關心的或許是,四元數與旋轉究竟有何關係,假設有一任意旋轉軸的向量A(Xa,Ya,Za)與一旋轉角度θ,如下圖所示:可以將之轉換為四元數:x=s*Xay=s*Xbz=s*Xcw=cos(θ/2)s

8、=sin(θ/2)所以使用四元數來表示的好處是:我們可以簡單的取出旋轉軸與旋轉角度。在这里,我将自己加一个上面公式的反推导,我们将根据四元数求我们用于旋转它的向量A(Xa,Ya,Za)。公式如下:θ=acos(w)*2s=sin(θ/2)Xa=x/sXb=y/sXc=c/s这个公式在编程当中也很有用,至于有什么用,偶现在还不清楚。那麼四元數如何表示三維空間的任意軸旋轉?假設有一向量P(X,Y,Z)對著一單位四元數q作旋轉,則將P視為無純量的四元數Xi+Yj+Zk,則向量的旋轉經導證如下:Rot(P)=qpq

9、*四元數具有純量與向量,為了計算方便,將之以矩陣的方式來表現四元數的乘法,假設將四元數表示如下:q=[w,x,y,z]=[S,V]兩個四元數相乘q"=q*q'的矩陣表示法如下所示:若令q=[S,V]=[cosθ,u*sinθ],其中u為單位向量,而令q'=[S',V']為一四元數,則經過導證,可以得出q*q'*q^(-1)會使得q'繞著u軸旋轉2θ。由四元數的矩陣乘法與四元數的旋轉,可以導證出上面的旋轉公式可以使用以下的矩陣乘法來達成:講了這麼多,其實就是要引出上面這個矩陣乘法,也就是說如果您要讓向量(x'

10、,y',z')(w'為0)對某個單位向量軸u(x,y,z)旋轉角度2θ,則w=cosθ,代入以上的矩陣乘法,即可得旋轉後的(x",y",z"),如果為了方便,轉換矩陣的最下列與最右行會省略不寫出來,而如下所示:關於四元數的其它說明,您可以參考向量外積與四元數這篇文章。關於旋轉的轉換矩陣導證,在GameProgrammingGems第二章有詳細的說明。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。