在前文中提到在三維空間的旋轉中無論使用歐拉角 Euler Angle 或是軸角 Axis Angle 都有 singularity 的問題,因此在計算中無法使用內插或迭代法尋找正確的旋轉參數。本篇文章將介紹四元數 quaternion,用四元數來表示三維空間旋轉就不會有以上的問題了。
四元數的性質
一個四元數 quaternion 包含了一個實部以及三個虛部:
q=q0+q1i+q2j+q3ki2=j2=k2=ijk=−1
其他關於四元數的運算細節請參考此文章 [1]。
四元數與三維旋轉
我們可以用一個單位四元數 unit quaternion (norm 為 1 的四元數)來表示三維空間中的旋轉。我們假設空間中的點 p=[x,y,z] 繞著旋轉軸 u 旋轉 θ 度。在計算的時候我們把此三維空間中的點用一個虛四元數來表示:
v=[0,x,y,z]
並且把旋轉軸 u 及旋轉角度 θ 用一個四元數 q 來表示:
q=[cos(12θ),sin(12θ)u]
則旋轉過後的點 p′=[x′,y′,z′ 可以表示為:
v′=[0,x′,y′,z′]=qvq−1
公式的證明細節也請參閱參考資料 [1]。
四元數與旋轉向量轉換的例子
上面提到將旋轉向量 [u,θ] 轉換成四元數可以用此公式 q=[cos(12θ),sin(12θ)u],而將一個四元數 q=[q0,q1,q2,q3] 轉換成旋轉向量則可用以下公式:
θ=2 acos(q0)u=[q1,q2,q3]/sin(θ2)
打個比方,假設三維空間中的旋轉軸為 [1√3,1√3,1√3],而旋轉的角度為 120 度,也就是 23π,則轉換後的四元數為:
q=[cos(12θ),sin(12θ)u]=[cos(13π),sin(13π)(1√3i,1√3j,1√3k)]=[12,12i,12j,12k]
而從此四元數 q=[12,12,12,12] 我們可以再用上面的公式轉換回: θ=23πu=[1√3,1√3,1√3]
三維旋轉、四元數與群的關係
接下來我們將三維空間的旋轉表示與抽象代數連結在一起。雖然現在還看不出來有什麼用,但是往後的文章中我們會用到這些性質來做運算。
單位四元數與 SU(2) 是 isomorphic
一下寫出這麼一個定理可能有點太突然了,因此我們先來簡介每個詞的意思。
- 單位四元數:norm 為 1 的四元數
- SU(2):special unitary group,由行列式為 1 的 2×2 unitary 矩陣組成的群。
- Unitary matrix:是一個複數的方陣 U,滿足 U∗U=UU∗=I ,其中 U∗ 為 U 的共軛轉置矩陣。
- 群 Group:指的是抽象代數中的群,定義請參考維基百科。
- 同構 Isomorphic:大意上是說兩個群的結構是完全等價的,定義請參考維基百科。
以下證明取自於參考資料 p.8 [2]。
首先我們可以用一個 2×2 的矩陣 H 來表示四元數 q=[q0+q1i+q2j+q3k]:
1=[1001], i=[0−110], j=[0−i−i0], k=[i00−i]H={q0+q1i+q2j+q3k}=[q0+q3i−q1−q2iq1−q2iq0−q3i]
H 的行列式為 q20+q21+q22+q23=1,因此我們可以算出 H 的反矩陣為:
H−1=[q0−q3iq1+q2i−q1+q2iq0+q3i]=H∗
因此便證明了
單位四元數與 SU(2) 是 isomorphic。
There is a surjective group homomorphism SU(2) → SO(3)
Homomorphism 的定義請參考維基百科,與 isomorphism 不同的地方是 isomorphism 是兩個群之間都存在相互的映射。證明請參閱參考資料 p.13 [2]。
因為對於一個四元數 q 來說,其對應的旋轉 qvq−1 與 -q 對應的旋轉 (−q)v(−q)−1 相同,代表說兩個四元數會對應到一個旋轉矩陣,所以四元數與旋轉矩陣只是 surjective homomorphism 的關係,並不是 isomorphism。
沒有留言:
張貼留言