學習和研究下unity3d的四元數 Quaternion
今天准備學習和研究下unity3d的四元數 Quaternion
四元數在電腦圖形學中用於表示物體的旋轉,在unity中由x,y,z,w 表示四個值。
四元數是最簡單的超復數。復數是由實數加上元素 i 組成,其中i^2 = -1 \,。 相似地,四元數都是由實數加上三個元素 i、j、k 組成,而且它們有如下的關系: i^2 = j^2 = k^2 = ijk = -1 \, 每個四元數都是 1、i、j 和 k 的線性組合,即是四元數一般可表示為a + bi + cj + dk \,。
具體的四元數知識可從百度、維基等網站了解。
http://baike.baidu.com/view/319754.htm
現在只說說在unity3D中如何使用Quaternion來表達物體的旋轉。
基本的旋轉我們可以用腳本內置旋轉函數transform.Rotate()來實現。
function Rotate (eulerAngles : Vector3, relativeTo : Space = Space.Self) : void
但是當我們希望對旋轉角度進行一些計算的時候,就要用到四元數Quaternion了。我對高等數學來說就菜鳥一個,只能用最朴素的方法看效果了。
Quaternion的變量比較少也沒什么可說的,大家一看都明白。唯一要說的就是x\y\z\w的取值范圍是[-1,1],物體並不是旋轉一周就所有數值回歸初始值,而是兩周。
初始值: (0,0,0,1)
沿着y軸旋轉:180°(0,1,0,0) 360°(0,0,0,-1)540°(0,-1,0,0) 720°(0,0,0,1)
沿着x軸旋轉:180°(-1,0,0,0) 360°(0,0,0,-1)540°(1,0,0,0) 720°(0,0,0,1)
無旋轉的寫法是Quaternion.identify
現在開始研究Quaternion的函數都有什么用。
函數
