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 單位複數的乘法可以達...