旋轉矩陣、歐拉角、四元數比較


旋轉矩陣、歐拉角、四元數主要用於:向量的旋轉、座標系之間的轉換、角位移計算、方位的平滑插值計算。


不同的方位表示方法適用於不同的情況。下面是我們對合理選擇格式的一些建議: 
l 歐拉角最容易使用。當需要爲世界中的物體指定方位時,歐拉角能大大的
簡化人機交互,包括直接的鍵盤輸入方位、在代碼中指定方位(如爲渲染設定攝像機)、在調試中測試。這個優點不應該被忽視,不要以”優化”爲名義而犧牲易用性,除非你去頂這種優化的確有效果。 
l 如果需要在座標系之間轉換響亮,那麼就選擇矩陣形式。當然,這並不意味
着你就不能用其他格式來保存方位,並在需要的時候轉換到矩陣格式。另一種方法是用歐拉角作爲方位的”主拷貝”但同時維護一個旋轉矩陣,當歐拉角發生改變時矩陣也要同時進行更新。 
l 當需要大量保存方位數據(如:動畫)時,就使用歐拉角或四元數。歐拉角將
少佔用25%的內存,但它在轉換到矩陣時要稍微慢一些。如果動畫數據需要嵌套座標系之間的連接,四元數可能是最好的選擇。 
l 平滑的插值只能用四元數完成。如果你用其他形式,也可以先轉換到四元
數然後再插值,插值完畢後再轉換回原來的形式。


以下是萬向鎖的資料,轉至維基百科



歐拉角有兩種:

  • 靜態:即繞世界座標系三個軸的旋轉,由於物體旋轉過程中座標軸保持靜止,所以稱爲靜態。

  • 動態:即繞物體座標系三個軸的旋轉,由於物體旋轉過程中座標軸隨着物體做相同的轉動,所以稱爲動態。

使用動態歐拉角會出現萬向鎖現象;靜態歐拉角不存在萬向鎖的問題。

一個典型的萬向鎖問題可以表述如下:先heading45°再pitch90°,這與先pitch90°再bank45°是等價的。事實上,一旦選擇±90°作爲pitch角,就會導致第一次旋轉和第三次旋轉等價,整個旋轉表示系統被限制在只能繞豎直軸旋轉,丟失了一個表示維度。這種角度爲±90°的第二次旋轉使得第一次和第三次旋轉的旋轉軸相同的現象,稱作萬向鎖。

正常狀態:三個獨立的旋轉軸


萬向鎖:一旦選擇±90°作爲pitch角,就會導致第一次旋轉和第三次旋轉等價,整個旋轉表示系統被限制在只能繞豎直軸旋轉,丟失了一個表示維度。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章