四元數與旋轉關係

2021-05-25 02:46:14 字數 1266 閱讀 4879

1、圍繞乙個軸旋轉的quaternion如何從幾何意義上去思考

圍繞軸旋轉函式:fromangleaxis( ***ngle, rkaxis );

quaternion::identity 預設狀態下的xyz軸資訊 (x-紅色,y-綠色,z-藍色)

ogre::quaternion quat;

quat.fromangleaxis(ogre::radian(ogre::math::pi/2.0f), ogre::vector3(1,1,1) );

圍繞軸(1,1,1)旋轉90度後的情況為:

從兩個圖中的資訊來看,每次旋轉其實都是指相對於預設的quaternion::identity 進行的。

引申一下,對於ogre::vector3中的

getrotationto(const vector3& dest,

const vector3& fallbackaxis = vector3::zero) 

其會將從自身到dest的叉乘的向量為軸,dest到this之間的構成的角度為弧度旋轉

2、四元數相乘順序的問題,雖然有時候對四元數相乘順序有一定了解。但是要熟練理解和掌握還有一些疑問。

我們先從乙個例子來分析:

///從尤拉角計算出旋轉量 

getquaterionfromeuler(

double yawradian, 

double pitchradian, 

double rollradian)   

上面的這個變換過程的順序是,首先繞y軸做方位旋轉yaw,然後繞x軸做俯仰旋轉pitch,最後繞x軸做翻滾旋轉roll。 但是在實現的時候,四元數的操作順序是 : yawyaxis*(pitchxaxis*rollzaxis); 通過這個順序,不從機理上進行分析的話,那麼就是後進行的變換操作,需要右乘前面的四元數。

我們再簡單的分析一下,如果旋轉變換quad1,與旋轉變換quad2;如果quad2是在相對於quad1的空間內,做的旋轉變換,那麼最終的旋轉變換應該是 quad1*quad2;   下面有段ogrenode.cpp中一段**,從這段**我們也可以了解四元數的旋轉順序關係。

enum transformspace 

; void node::rotate(

const quaternion &q, transformspace relativeto)   

needupdate(); 

Android 重力感應和螢幕旋轉關係

採用重力加速度感應控制螢幕旋轉最為理想。不方便作圖,簡單說 重力加速度感應可以想象成乙個小球在座標系中,三個方向上的加速度。永遠以手機螢幕為準,不以外界為準作圖,手機水平放置,向上是y軸正向,向右是x軸正向,向外是z軸正向。這和高數座標系一樣。注意 你移動手機反映在座標系上你移動的是座標系遠點 旋轉...

四元數 Quaternions 與旋轉總結

2 四元數的乘法 3 單位四元數 4 共軛四元數 5 四元數的逆 6 四元數與空間旋轉 7 總結 8 旋轉矩陣,尤拉角,四元數比較 9 參考博文 除了特別難理解之外,相比矩陣或尤拉角,四元數在表示旋轉這個事情上,擁有一些明顯的優點。儘管使用四元數有這麼多優點,還是有缺點存在的。不同的方位表示方法適用...

四元數與旋轉變換

複數的提出將實數系直接擴大了乙個維度,實數成了複數的乙個特例。令 textbf 為虛數單位,即 textbf 2 1 尤拉公式 e cos theta i sin theta 把乙個複數 c a bi 的極座標寫為 c re 其中,r sqrt,theta arctan b a 單位複數的乘法可以達...