日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

四元数基础

發布時間:2024/9/5 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四元数基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  

四元數基礎

  以下內容摘自《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數學基礎:圖形與游戲開發》(清華大學出版社)

轉載于:https://www.cnblogs.com/mengdd/p/3238223.html

總結

以上是生活随笔為你收集整理的四元数基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。