之前說到,使用尤拉角積分和方向余弦積分求得角度並不合適,而比較合適的是四元數。
在討論「四元數」之前,我們來想想對三維直角座標而言,在物體旋轉會有何影響,可以擴充三維直角座標系統的旋轉為三角度系統(three-angle system),在game programming gems中有提供這麼一段:工具:簡單地說,三角度系統無法表現任意軸的旋轉,只要一開始旋轉,物體本身即失去對任意軸的自由性。(引自四元數與旋轉)
四元數是簡單的超複數。 複數是由實數加上虛數單位 i 組成,其中i^2 = -1。 相似地,四元數都是由實數加上三個虛數單位 i、j、k 組成,而且它們有如下的關係: i2四元數的表示式:=j2=
k2=−
1 ,i0
=j0=
k0=1
, 每個四元數都是 1、i、j 和 k 的線性組合,即是四元數一般可表示q=
a+bk
+cj+
di
虛數單位滿足:
我們可以從複數來認識四元數,順便說一下四元數的來歷。在二維空間中,複數可以和復平面中的點一一對應,並且可以表示二維空間中的旋轉。但是到了三維空間中呢?愛爾蘭數學家哈密頓在將複數延伸到三維空間中時,想使用q=a+bi+cj來表示和三維空間中的點對應,但是遇到了乙個問題,這個『三元數』的乘法和除法該怎麼計算呢?例如,i*j應該等於多少?而最終,哈密頓犧牲了乘法交換律創造了四元數,虛數單位可以得到完整的乘法表:–1
ijk11ij
kii-1k
-jjj
-k-1
ikkj-i
-1 這樣,相應的加減乘除也得到了解決。
四元數的運算:
設有兩個四元數:
則加法定義為:
乘法遵循分配律:
單位四元數,範數(模長)為1:
定義四元數q=
w1+x
1i+y
1j+z
1k的共軛為:
四元數的倒數為:
具體的四元數的運算在這裡就不說了,維基百科四元數里有比較詳細的解釋。
總之,四元數是類似複數的超複數,有三個虛數單位。為了延伸到三維空間產生,可以表示三維空間裡的點,三維空間的旋轉。
用四元數來表示旋轉要解決兩個問題,一是如何用四元數表示三維空間裡的點,二是如何用四元數表示三維空間的旋轉。看了上面的解釋還是不是很好理解,那麼,四元數是怎樣表示空間中的旋轉的呢?先從二維空間中的複數看起。四元數表示空間中的點
若三維空間裡的乙個點的笛卡爾座標為 (x,y,z),則它用純四元數(類似於純虛數,即實部為0的四元數)xi
+yj+
zk表示。
單位四元數表示乙個三維空間旋轉
設 q 為乙個單位四元數,而 p 是乙個純四元數,定義 rq
(p)=
qpq−
1
則 rq(p)) 也是乙個純四元數,可以證明 rq 確實表示乙個旋轉,這個旋轉將空間的點 p 旋轉為空間的另乙個點 rq(p))。(引自維基百科:四元數與空間旋轉)
複數的表達形式:
我們還需要知道一點,尤拉公式:
尤拉公式證明可以有泰勒級數或者求導證得,這裡不多說。
由複數的各種表現形式和尤拉公式,可以推導出:
則對於複數z和單位複數ei
θ=cosθ+i
sinθ
的乘積ze
iθ可以解讀為點
z 在二維復平面中逆時針旋轉了
θ經度,或者向量(a
,b) 在復平面中逆時針旋轉了
θ 度。即:z=
a+bi
可以表示為向量(a,b)旋轉了
θ 度,θ=
arctan(b
/a) 。
模擬於此,四元數z=
a+bi
+cj+
dk=r
eiθ 也可以表示乙個旋轉,不過不如複數那樣明確,難以想象在r4
中的四元數是對r3
中的向量怎樣執行運算的。
仿照關於單位複數的尤拉公式的證明方法,可以得到單位四元數的尤拉公式: eθ這裡直接給出四元數表示旋轉的約定。首先明確一點:2(xi
+yj+
zk)=
cosθ2+
(xi+
yj+z
k)sinθ2,
for x,
y,z∈
rs.t. x2
+y2+
z2=1
(引自維基百科:四元數與空間旋轉)
乙個有固定點的剛體通過繞該軸旋轉特定角度就可以達到任何姿態。
轉軸可以表示成為乙個單位向量:
描述該轉動的四元數為:
最終表示為:
四元數可以表示旋轉的轉軸和角度。
慣性導航之四元數與歐垃角互轉(五)
雖然還沒有搞得特別明白,這一次說一下四元數與尤拉角之間的轉換。單位四元數 unit quarternion 可以用於表示三維空間裡的旋轉 1 它與常用的另外兩種表示方式 三維正交矩陣和尤拉角 是等價的,但是避免了尤拉角表示法中的萬向鎖問題。比起三維正交矩陣表示,四元數表示能夠更方便地給出旋轉的轉軸與...
四元數乘法 旋轉之四 四元數
用 表示四元數是為了紀念其發明者 hamilton.其中 可以根據 來推導以下式子 跟複數類似,我們可以把四元數寫成 它的基是 或者 類似複數,四元數的模長 範數norm 定義為 也可寫成 同複數的乘法不同,四元數乘法不遵守交換律,所以有左乘和右乘的說法,結合律和分配律還是滿足的。類似的,我們也可以...
四元數基礎
以下內容摘自 3d數學基礎 圖形與遊戲開發 清華大學出版社 四元數 繞軸n旋轉 角 n是乙個向量,根據左手或右手法則定義旋轉的正方向,角表示旋轉的量。那麼表示這個旋轉的四元數為 幾何上存在兩個單位四元數,它們代表沒有角位移 任意四元數乘以乙個幾何單位四元數得到的角位移相同 雖然乘以兩種形式得到q和 ...