William Rowan Hamilton 在 1843 年發明了四元數(quaternions)。他努力推廣四元數來描述三維空間,不過當時有很多數學家反對,認為四元數很邪惡。
不過在一個世紀之后,四元數在計算機工業界起死回生,包括計算機圖形學、機器人等領域應用廣泛。他描述三維旋轉簡潔、計算高效、也能避免數值誤差。
除此之外,四元數在量子力學方面也有應用。
定義
四元數的定義和相關規則如下:
$$q=a+bi+cj+dk$$
其中 $a$、$b$、$c$、$d$ 是標量,而 $i$、$j$、$k$ 是虛數,並遵循以下規則:
$$i^2=-1,j^2=-1,k^2=-1,ijk=-1$$
$$ij=k,jk=i,ki=j$$
$$ji=-k,kj=-i,ik=-j$$
19 世紀末,Josiah Gibbs 提出 3 個虛數可以看做 3 維向量,避免包含那么多的虛數項。於是 $bi+cj+dk$ 變為 $q=a+b\vec{i}+c\vec{j}+d\vec{k}$ 的向量表示,其中 $\vec{i}$、$\vec{j}$、$\vec{k}$ 是單位笛卡爾向量。
目前,在計算機圖形學中,一般用兩種方式表達四元數:
$$\vec{q}=s,\vec{v}$$
$$\vec{q}=s+\vec{v}$$
其中 $s$ 是標量,$\vec{v}$ 是 3D 向量。
這里我們把四元數表示為標量和向量的組合,於是:
$$\vec{q}=s+\vec{v}=s+x\vec{i}+y\vec{j}+z\vec{k}$$
其中 $s$、$x$、$y$、$z$ 為標量。
后面我們會知道 $\vec{v}$ 用於表示旋轉軸,而 $s$ 表示旋轉角度。
公理
復數是實數的二維延伸,而四元數是復數的四維延伸。除了乘法以外,四元數與復數有相同的公理。
加法
交換律:$q_1+q_2=q_2+q_1$
結合律:$(q_1+q_2)+q_3=q_1+(q_2+q_3)$
乘法
結合律:$(q_1q_2)q_3=q_1(q_2q_3)$
交換律(不滿足):$q_1q_2\neq q_2q_1$
加減
對於兩個四元數(為了方便,此后向量不再加箭頭號):
$$q_1=s_1+x_1i+y_1j+z_1k$$
$$q_2=s_2+x_2i+y_2j+z_2k$$
其加減法為:
$$q_1\pm q_2=(s_1\pm s_2)+(x_1\pm x_2)i+(y_1\pm y_2)j+(z_1\pm z_2)k$$
四元數相乘
結合一下運算規則:
$$i^2=-1,j^2=-1,k^2=-1,ijk=-1$$
$$ij=k,jk=i,ki=j$$
$$ji=-k,kj=-i,ik=-j$$
對於兩個四元數:
$$q_1=s_1+v_1=s_1+x_1i+y_1j+z_1k$$
$$q_2=s_2+v_2=s_2+x_2i+y_2j+z_2k$$
相乘之后:
\begin{align*}
q_1q_2 &= s_1s_2-(x_1x_2+y_1y_2+z_1z_2)+s_1(x_2i+y_2j+z_2k)+s_2(x_1i+y_1j+z_1k)+(y_1z_2-y_2z_1)i+(z_1x_2-z_2x_1)j+(x_1y_2-x_2y_1)k\\
&= s_1s_2-v_1\cdot v_2+s_1v_2+s_2v_1+v_1\times v_2
\end{align*}
其中 $s_1s_2-v_1\cdot v_2$ 是標量,$s_1v_2+s_2v_1+v_1\times v_2$ 是向量。
由於 $v_1\times v_2$ 的存在,可以證實四元數乘法不滿足交換律。
純四元數
標量項為 0 的四元數稱為純四元數(pure quaternion):
$$q=0+v$$
對於兩個純四元數 $q_1=0+v_1$ 和 $q_2=0+v_2$,其乘積為:
$$q_1q_2=-v_1\cdot v_2+v_1\times v_2$$
進而可以發現,兩個純四元數的平方為:
$$
\begin{align*}
qq &= -v\cdot v+v\times v\\
&= -v\cdot v\\
&= -\left | v \right |^2
\end{align*}
$$
在 Hamilton 的時代,尤其物理學家對於這個負數結果很難接受,因而拒絕使用四元數而接受 Gibbs 等人的向量分析。
四元數的模
四元數的模(modulus)或范數(norm)寫作 $\left | q \right |$ ,對於四元數 $q=s+xi+yj+zk$:
$$\left | q \right |=\sqrt{s^2+x^2+y^2+z^2}$$
四元數的模的幾何意義是對空間的放縮系數。
單位四元數
單位四元數(unit quaternion)是模為 1 的四元數:
$$\left | q \right |=\sqrt{s^2+x^2+y^2+z^2}=1$$
單位四元數尤為重要,如果把它看作是幾何變換的話,由於模為 1,所以放縮系數為 1,於是單位四元數它相當於一個描述三維空間的純旋轉動作。
任何四元數 $q$ 都可以規范為單位四元數 $\hat{q}$:
$$\hat{q}=$\frac{q}{\left | q \right |}$
共軛四元數
共軛四元數和共軛復數類似,對於某一四元數:
$$q=s+v=s+xi+yj+zk$$
其共軛四元數為:
$$q^*=s-v=s-xi-yj-zk$$
於是我們可以發現:
$$
\begin{align*}
qq^*&=(s+v)(s-v)\\
&=s^2+v\cdot v+sv-sv+v\times (-v) \\
&= s^2+x^2+y^2+z^2
\end{align*}
$$
其乘積是一個標量,進而可得:
$$qq^*=\left | q \right |^2\Leftrightarrow \left | q \right |=\sqrt{qq^*}$$
類似地,我們可以證明:$qq^*=q^*q$。
根據共軛四元數定義和乘法,我們還可以證得:$(q_1q_2)^*=q_2^*q_1^*$。
四元數的逆
$q^{-1}$ 是四元數 $q$ 的逆($q\neq 0$),滿足:
$$qq^{-1}=q^{-1}q=1$$
根據定義,兩邊同乘 $q^*$,可得:
$$q^*qq^{-1}=q^*q^{-1}q=q^*$$
$$\Rightarrow q^*qq^{-1}=q^*$$
$$\Rightarrow \left | q \right |^2q^{-1}=q^*$$
$$\Rightarrow q^{-1}=\frac{q^*}{\left | q \right |^2} $$
顯然,如果 $q$ 是單位四元數,即 $\left | q \right |=1$,那么:
$$q^{-1}=q^*$$
由於單位四元數可以表示旋轉作用,那么單位四元數的逆就表示對這個旋轉作用的抵消作用。關於四元數的更多幾何意義推薦觀看四元數的可視化。
參考
- Rotation Transforms for Computer Graphics by John Vince
- 四元數的可視化
- 【幾何系列】復數基礎與二維空間旋轉