跳轉到內容

遊戲開發指南/理論/數學/四元數

50% developed
來自華夏公益教科書

四元數用於繞多個旋轉軸旋轉幾何體和點。它們存在於四個維度中,因此具有四個部分:w、x、yz。由於 x、yz 相互關聯且類似,人們有時使用另一個字母來代表所有三個,v 是常見的表示。要表示它們,您應該將它們儲存在 4 維 向量 中,如下所示:. 四元數用作 尤拉角 的替代方案。

四元數的優點[1]

  • 沒有萬向節鎖死
  • 插值平滑且直接
  • 計算簡單

四元數的基本建立

[編輯 | 編輯原始碼]

因此,如果您選擇了一些您想圍繞其旋轉幾何體的單位長度 3D 向量 () 以及您想旋轉幾何體的度數 (),然後建立一個旋轉四元數 ().

通常有兩種形式來表示四元數,簡寫和長寫。在簡寫表示法中,它以 wv (x、yz 的組合) 表示。

這可以使用 w、x、yz 在長寫表示法中表示

其中[2]

如果四元數沒有旋轉,那麼它的值為[3]

[編輯 | 編輯原始碼]

這 4 個分量(**w, x, y** 和 **z**)可以分解成一個實數和三個虛數

其中 是虛數,使得 。由此,您可以得出以下結論


四元數的逆

[編輯 | 編輯原始碼]

求逆一個四元數,只需將xyz 分量乘以-1

四元數的乘法

[編輯 | 編輯原始碼]

當將兩個四元數相乘時,順序很重要)。

乘積定義為[4]


Clipboard

待辦事項
新增並理解語句:(rotationQuaternion*pointQuaternion)*conjugateQuaternion

研究:

[此處可見]


球面線性插值 (SLERP)

[編輯 | 編輯原始碼]

這是在兩個四元數之間逐步插值的方法,例如獲得兩個四元數之間的中點(或其他點)。

四元數的上標表示法

[編輯 | 編輯原始碼]

在進行 SLERP 之前,您需要理解四元數的指數表示法。

如果您有一個四元數 a,並且您使用指數表示法將其提升到 t 次方,這意味著它將按指數 t 縮放四元數內部的角度。由於這僅僅是縮放所有角度,因此這意味著四元數的大小 () 仍然是 1

指數表示法的簡短表示法

[編輯 | 編輯原始碼]

指數表示法的長表示法

[編輯 | 編輯原始碼]

SLERP 方程

[編輯 | 編輯原始碼]

如果您的第一個四元數是 q,第二個四元數是 r,並且您想找到它們之間的一個點 (p),它位於從 qrt 百分比處,其中 0 ≤ t ≤ 1。

最終方程定義為[5]

[編輯 | 編輯原始碼]

YouTube

維基百科頁面

華夏公益教科書

參考文獻

[編輯 | 編輯原始碼]
華夏公益教科書