Loading [MathJax]/jax/output/CommonHTML/jax.js

2020年7月26日 星期日

Quaternion 四元數簡介

前文中提到在三維空間的旋轉中無論使用歐拉角 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]=qvq1 公式的證明細節也請參閱參考資料 [1]。

四元數與旋轉向量轉換的例子

上面提到將旋轉向量 [u,θ] 轉換成四元數可以用此公式 q=[cos(12θ),sin(12θ)u],而將一個四元數 q=[q0,q1,q2,q3] 轉換成旋轉向量則可用以下公式: θ=2 acos(q0)u=[q1,q2,q3]/sin(θ2) 打個比方,假設三維空間中的旋轉軸為 [13,13,13],而旋轉的角度為 120 度,也就是 23π,則轉換後的四元數為: q=[cos(12θ),sin(12θ)u]=[cos(13π),sin(13π)(13i,13j,13k)]=[12,12i,12j,12k] 而從此四元數 q=[12,12,12,12] 我們可以再用上面的公式轉換回: θ=23πu=[13,13,13]

三維旋轉、四元數與群的關係

接下來我們將三維空間的旋轉表示與抽象代數連結在一起。雖然現在還看不出來有什麼用,但是往後的文章中我們會用到這些性質來做運算。

單位四元數與 SU(2) 是 isomorphic

一下寫出這麼一個定理可能有點太突然了,因此我們先來簡介每個詞的意思。
  • 單位四元數:norm 為 1 的四元數
  • SU(2):special unitary group,由行列式為 1 的 2×2 unitary 矩陣組成的群。
  • Unitary matrix:是一個複數的方陣 U,滿足 UU=UU=I ,其中 UU 的共軛轉置矩陣。
  • 群 Group:指的是抽象代數中的群,定義請參考維基百科
  • 同構 Isomorphic:大意上是說兩個群的結構是完全等價的,定義請參考維基百科
以下證明取自於參考資料 p.8 [2]。

首先我們可以用一個 2×2 的矩陣 H 來表示四元數 q=[q0+q1i+q2j+q3k]1=[1001], i=[0110], j=[0ii0], k=[i00i]H={q0+q1i+q2j+q3k}=[q0+q3iq1q2iq1q2iq0q3i] H 的行列式為 q20+q21+q22+q23=1,因此我們可以算出 H 的反矩陣為: H1=[q0q3iq1+q2iq1+q2iq0+q3i]=H 因此便證明了 單位四元數與 SU(2) 是 isomorphic。

旋轉矩陣 R 與 SO(3) 是 isomorphic

  • 旋轉矩陣是前面提過的 3×3 矩陣
  • SO(3):special orthogonal group,由 3×3 方陣 R 組成的群,必須滿足線性關係、RRT=RTR=I、以及行列式為 1。細節請參考維基百科
  • 證明:請參閱參考資料 p.12 [2]。

There is a surjective group homomorphism SU(2) SO(3)

Homomorphism 的定義請參考維基百科,與 isomorphism 不同的地方是 isomorphism 是兩個群之間都存在相互的映射。證明請參閱參考資料 p.13 [2]。

因為對於一個四元數 q 來說,其對應的旋轉 qvq1 與 -q 對應的旋轉 (q)v(q)1 相同,代表說兩個四元數會對應到一個旋轉矩陣,所以四元數與旋轉矩陣只是 surjective homomorphism 的關係,並不是 isomorphism。


參考資料

[2] Introduction to Lie Groups, Alistair Savage

沒有留言:

張貼留言