四元數基礎


  

四元數基礎

  以下內容摘自《3D數學基礎:圖形與游戲開發》(清華大學出版社)

 

四元數  

                     

 

1.四元數和軸-角對

  繞軸n旋轉θ角:n是一個向量,根據左手或右手法則定義旋轉的正方向, θ角表示旋轉的量。

  那么表示這個旋轉的四元數為:

 

2.單位四元數

  幾何上存在兩個單位四元數,它們代表沒有角位移:

  任意四元數乘以一個幾何單位四元數得到的角位移相同(雖然乘以兩種形式得到q和-q的數形式不同,但是幾何意義相同,可以認為結果相同)。

  數學上實際只有一個單位四元數,即:

 

  因為數學上q和-q不相等。

 

3.四元數的模

 

 

  代入軸-角對的公式求模。

  n為單位向量,最后可以得到四元數的模為1.稱為單位四元數

 

4.四元數的共軛和逆

  四元數的共軛就是讓四元數的向量部分取負,記作:

 

  四元數和它的共軛代表相反的角位移,因為相當於旋轉軸反向。

  四元數的逆定義為四元數的共軛除以它的模:

 

  一般使用單位四元數,此時它的逆和共軛其實是相等的。

 

5.四元數乘法(叉乘)

 

 

  不用為四元數叉乘使用乘號,“行”“列”四元數也沒有什么區別。

  四元數叉乘滿足結合律,但是不滿足交換律。

  四元數乘積的模等於模的乘積,這樣保證了單位四元數相乘仍然是單位四元數。

  四元數乘積的逆等於各個四元數的逆以相反的順序相乘。

 

6.標准3D點的四元數旋轉

  擴展一個標准的3D點(x,y,z)到四元數空間,通過定義四元數:

  即可。

  設我們討論的旋轉四元數為:

 

  則執行下面的乘法可以使3D點p繞n旋轉:

 

  多次旋轉的情況:

 

  注意這個旋轉是以從右向左的順序發生的。

 

  可以改變標准的定義,以相反的運算順序來定義四元數乘法,從而將形式變為與旋轉發生的順序一致,此處公式略去。

 

7.四元數“差”

  利用四元數的乘法和逆,可以計算兩個四元數的“差”,四元數“差”表示一個方位到另一個方位的角位移

 

  注意不能除以四元數,只能乘以它們的逆來達到目的

 

8.四元數的點乘

  點乘結果是標量,兩個單位四元數點乘的結果區間為[-1,1]。

  點乘結果的絕對值越大,相乘的兩個四元數代表的角位移越相似。

 

9.四元數的對數、指數和標量乘運算

  略。

 

10.四元數求冪

  若四元數 代表一個角位移, 中取t等於1/3,就得到代表1/3這個角位移的四元數。

  注意的是四元數表達角位移時使用最短圓弧,不能繞圈。

  即如果q代表繞x軸順時針旋轉60°,那么t取4時不是預期的繞x軸順時針旋轉240°,而是逆時針80°。

  所以凡是涉及到指數運算的代數公式,如 ,對四元數不再適用。

  S=4,t=1/2,本來應該是等同於 ,然而由於t=4時選了最短弧,所以產生的不是預期的結果。

 

11.四元數插值——“Slerp”

  球面線性插值Spherical Linear Interpolation).

  Slerp運算非常有用,因為它可以在兩個四元數間平滑插值,避免了歐拉角插值的所有問題(角度限制以找到最短弧,萬向鎖(導致抖動、路徑錯誤),根本問題是插值過程中角速度不是恆定的。)

 

  兩個標量間的插值一般是這樣:

 

 

  可以使用同樣的步驟在四元數間插值:

  (1).計算兩個值的差。利用逆矩陣推到的。

  (2).計算差的一部分。(四元數求冪)。

  (3).在開始值上加上差的一部分。(方法使用四元數乘法來組合角位移)

 

  這是理論上的Slerp計算過程。實踐中將使用一種更加有效的方法。

  所有單位四元數都存在於一個4D球面上。

  幾何推導略。結果:

 

  可以用點乘來計算兩個四元數之間的“角度”。

  有兩點需要考慮:

  (1)四元數q和-q代表相同的方位,但它們作為slerp的參數時可能導致不一樣的結果。解決方法是選擇兩個數的符號使得它們點乘的結果是非負。

  (2)如果兩個四元數非常接近,那么sin會非常小,這時候除法可能會出現問題,為了避免這樣的問題,當sin非常小時使用簡單的線性插值。

 

12.四元數樣條——“squad”

   

 Spherical and Quadrangle

  木有看懂。

13.四元數的優缺點

  優點:

  平滑插值。

  快速連接和角位移求逆。

  能和矩陣形式快速轉換。

  僅用四個數。

  缺點:

  比歐拉角稍微大一些。

  四元數可能不合法。壞的輸入數據或浮點數舍入誤差積累引起。(通過四元數標准化解決這個問題,確保四元數為單位大小。)

  難於使用。

 

14.四元數、歐拉角、矩陣之間的轉換

  略。

 

參考資料:

  《3D數學基礎:圖形與游戲開發》(清華大學出版社)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM