Quaternion 與 Euler 的介紹

尤拉角是度角,如 90 度,180 度,45 度,30 度。四元數與尤拉角的不同之處在於它們代表單位球上的一個點(半徑為 1 個單位)。你可以將此球體視為你在三角學中學習的單位圓的 3D 版本。四元數與尤拉角的不同之處在於它們使用虛數來定義 3D 旋轉。

雖然這可能聽起來很複雜(並且可以說是這樣),但 Unity 具有很強的內建函式,允許你在尤拉角和四元數之間切換,以及修改四元數的函式,而不需要知道關於它們背後的數學的單一事物。

在 Euler 和 Quaternion 之間轉換

// Create a quaternion that represents 30 degrees about X, 10 degrees about Y
Quaternion rotation = Quaternion.Euler(30, 10, 0);

// Using a Vector
Vector3 EulerRotation = new Vector3(30, 10, 0);
Quaternion rotation = Quaternion.Euler(EulerRotation);

// Convert a transfroms Quaternion angles to Euler angles
Quaternion quaternionAngles = transform.rotation;
Vector3 eulerAngles = quaternionAngles.eulerAngles;

為什麼要使用四元數?

四元數解決了一個稱為萬向節鎖定的問題。當主旋轉軸與第三旋轉軸共線時,會發生這種情況。這是一個視覺示例 @ 2:09