參考文獻
1. 四元數的優勢
- 解決歐拉角的萬向鎖死問題
- 僅需要存儲4個浮點數(相比較矩陣而言)
- 求逆、串聯等比矩陣更高效
2. 幾個基本概念
空間中的子空間:一般而言,空間(維度>2)都存在更低維的子空間,比如二維空間中一維子空間,也就是直線;三維空間中的一維子空間和二維子空間,也就是直線和麪。當超過三維的概念我們就很難去想象是什麼樣子,但四維空間一定會存在三維子空間或二維子空間。我們這裏會加一個前綴超(hyper)來形容這些空間,比如高維空間中的平面我們稱爲超平面。
空間和子空間的映射:我們將二維空間表示爲(x,y),當y=0時,其實可以看成是一維的,只不過它表示成(x,0)這種形式。推到四維,(w,x,y,z),當w=0時,(0,x,y,z)就是一個三維子空間,這也是爲什麼我們可以用單位四元數對三維向量進行操作,其實我們是將三維向量映射到四維的三維子空間(w=0,這種形式也成純四元數),然後對其進行旋轉,最終得到的向量結果依然是這個三維子空間中的,因而可以映射回三維空間。
此處關於單位四元數可用來對三位向量進行操作的解釋需要補充,暫時不明白
廣義球:這裏的球是廣義上的。我們在二維平面上,廣義球其實指代circle,三維空間上就是我們認知上的球,稱爲two-sphere,而四維空間中廣義球其實是一個超球(hyper-sphere),又稱爲three-sphere。單位向量其實就是廣義球上面的點,而單位四元數也就是three-sphere上面的點。
最後一句,如何理解???
約束與特徵向量:空間中的一點由x, y, z等參數來表示,一般來說參數的數量與維數相等,二維空間的點用{x, y}參數,四維空間的點用{x, y, z, w}參數。但是對於空間的點加以約束,則該會減少參數的數量,比如三維空間的點在某一單位球面上,原本三個參數{x, y, z}才能表達的點現在只需要兩個參數{u, v}就可以表達。如果{u, v}是單位向量,也可以稱{u, v}是{x, y, z}的特徵向量。
複數:大家都知道基本概念。
歐拉公式:
從複數推導出四元數:將複數的一個虛部擴展成三個虛部,即兩兩相交{i,j,k}
其中n爲三維的單位向量,i²=j²=k²=i·j·k=-1
3.四元數特性
- 四元數(以後不特指四元數=單位四元數)是四維空間中一個超球上面的點,滿足w²+x²+y²+z²=1;而純四元數是四維空間在w=0時的一個子空間的點,形式爲{0, q},特別注意的是純四元數與四元數是不同的概念。
- 四元數是複數虛部擴展的結果,複數的虛部爲1個,而四元數虛部有3個,且兩兩互相正交,其中實部是cosθ/2,而虛部爲一個単位軸乘以sinθ/2。
- 四元數自由度並沒有四個維度,由於存在w²+x²+y²+z²=1這個約束,它的自由度其實只有3,且每個四元數可以對應一個特徵向量,即n。但請記住四元數並不是與特徵向量一一對應的,後文會有說。
4. 乘法
由於四元數有i,j,k三個虛部,所以得滿足i²=j²=k²=i·j·k=-1這個條件。這裏令★爲“乘法”操作符,則p★q的公式如下
- 封閉性:易證明,p和p的共軛相乘即可,|p★q|=1。
如何理解???
- 結合律:這條也很好證明,只要證明(p★q)★r=p★(q★r)。
- 單位元素:e=(1,0,0,0),這也是四元數的一個初始值(相當於單位矩陣)。帶入上面的公式可知,p★(1,0,0,0)還是等於p。
- 逆元素:p存在一單位四元數,★操作的結果爲e,具體參考下面公式,可以看出逆元素就是其共軛除以模的平方。
5. 指數、對數與內積
- 根據歐拉公式可知,四元數的指數形式只是換了一種表達方式,都是表達同一個東西。而其對數形式也就是四元數指數形式的指數,如下圖公式所示。這對公式在計算四元數插值的時候很有用,這個後文再說。
- 那麼對數和指數的關係是什麼呢?我們參考下圖,其實對數的變化量其實就是角度的大小,所以用下圖可以很直觀的看出四元數指數形式和對數形式之間的關係。
沒看明白???
- 內積:我們先看三維空間或二維空間,如果兩個單位向量算內積,內積的結果爲兩個向量的夾角。四元數也是如此,兩個單位四元數的內積就是其夾角,這個結論推廣到n維也是成立,原因很簡單,因爲三點共面,即使n維空間,兩個向量所在的空間也僅是二維子空間。至於外積,由於對於複數和四元數來說,外積的意義均不是很明顯,這裏就不做過多討論。
TODO:部分原理理解還不是很好,待補充