2009-12-20 99 views
2

如果我錯了,告訴我。四元數和變換矩陣

我開始使用四元數。使用旋轉矩陣4 x 4(如OpenGL中所用),我可以計算將當前模型視圖與旋轉矩陣相乘的模型視圖矩陣。旋轉矩陣來自四元數。

四元數是一個方向矢量(甚至沒有標準化)和一個旋轉角度。結果旋轉取決於方向矢量模塊和四元數組件。

但是,爲什麼我應該使用四元數來代替歐拉軸/角度符號?後者是更簡單的可視化和管理......

,我發現可以用這個beatifull文章中synthetized所有信息:

http://en.wikipedia.org/wiki/Rotation_representation

回答

4

爲什麼使用四元數在本文中有所解釋。

  • 以上的DCM表示緊湊,舍入誤差不敏感
  • 四元數的元件連續變化超過在R4單位球面上,(由S3表示)作爲取向的變化,從而避免不連續的跳躍(固有到三維參數化),這通常被稱爲萬向節鎖。在四元數參數方面
  • 表達了DCM的不涉及三角函數
  • 它是簡單使用四元產品
1

四元更容易可視化,管理和場景中創建你想旋轉一個可以很容易計算的特定軸。確定單個旋轉角度比將旋轉分解爲多個角度要容易得多。

對OP的修正:矢量表示旋轉軸,而不是方向,旋轉分量是半角的餘弦,而不是角度本身。

2

四元數通常用於計算簡單性 - 使用四元數時,執行諸如組合轉換之類的操作會更容易(也更快)。引述Wikipedia頁面你聯繫,

組合兩個連續旋轉, 每個由歐拉軸和 角來表示,不直接的,並且在 事實不滿足 矢量相加,其示出的法 有限旋轉並不是真的 矢量。最好採用 方向餘弦矩陣(DCM)或 張量或四元數法, 計算產品,然後 轉換回歐拉軸和角度。

它們也不會遇到軸/角形式共同的問題,gimbal lock

1

我不同意四元數是比較容易想象被表示爲四元兩個獨立的旋轉相結合,但使用它們的主要原因是很容易在沒有「矩陣蠕變」的情況下連接旋轉。

+0

爲什麼你不覺得他們更容易可視化?什麼比旋轉軸和角度更容易? – RickNZ 2009-12-20 02:05:52

+1

觀察數據時,四元數的實際表示方式不像這樣,與我們更熟悉的歐拉角相比,因此在解釋數據或調試時更容易可視化。 – 2009-12-27 07:26:29

+1

我會說四元數更容易形象化,因爲它們給出了虛構組件中的旋轉軸。當想象一組歐拉角度的旋轉軸時,我幾乎必須在頭腦中執行三次歐拉旋轉,然後將對象的最終方向與原始方向進行比較,然後可以看到單軸旋轉旋轉。 – SuperElectric 2010-08-14 20:24:57

0
  • 如前所述,四元數不會受到gimble lock的影響。
  • 對於給定的旋轉,只有一個歸一化四元數表示。
    • 可能有幾個看起來不相關的軸/角度值導致相同的旋轉。
  • 四元數旋轉可以很容易地組合。
    • 計算作爲另外兩個軸/角度旋轉的累積的軸/角表示法是非常複雜的。
  • 當表示0.0和1.0之間的值時,浮點數具有更高的準確度。

簡短的回答是,軸/角符號可以在最初似乎是最合理的表現,但在實踐中四元減輕許多問題,軸/角符號禮物。

+0

在這種情況下,「軸/角度」不明確。畢竟,Quaterions也是一個軸(旋轉)和一個角度(實際上是半角的餘弦)。 – RickNZ 2009-12-20 04:06:48