二維旋轉(zhuǎn)矩陣(2D Rotation Matrix)
在歐幾里得坐標(biāo)系下脯丝,二維的旋轉(zhuǎn)矩陣可以用一個旋轉(zhuǎn)角 $\theta$ 來表達(dá)出來。具體地歌逢,
$$ R = \begin{bmatrix} \cos \theta & -\sin \theta \ \sin \theta & \cos \theta \ \end{bmatrix} $$
二維點坐標(biāo)表示為列向量乘以旋轉(zhuǎn)矩陣巾钉,得到的列向量就是在歐幾里得坐標(biāo)系下的旋轉(zhuǎn)后的坐標(biāo)。
三維旋轉(zhuǎn)矩陣(3D Rotation Matrix)
一般地秘案,歐幾里得理論下砰苍,三維旋轉(zhuǎn)矩陣可以表達(dá)為繞著某個方向向量以及繞著這個方向向量的旋轉(zhuǎn)角(默認(rèn)采用右手原則)。也就是說阱高,確定一個三維旋轉(zhuǎn)矩陣有 4 個變量赚导,方向向量 $x, y, z$ 以及旋轉(zhuǎn)角 $\theta$ 。歐拉旋轉(zhuǎn)指出赤惊,三維旋轉(zhuǎn)矩陣的自由度是 3 吼旧。
三維旋轉(zhuǎn)矩陣有多種表示方法,主要有 2 種方法:歐拉旋轉(zhuǎn)未舟、四元組圈暗。
1. 歐拉旋轉(zhuǎn)(Euler Rotation)
歐拉旋轉(zhuǎn)的想法和旋轉(zhuǎn)向量相似。但是不是給定一個旋轉(zhuǎn)向量裕膀,而是分別給出觀測對象沿$x, y, z$ 三個坐標(biāo)軸旋轉(zhuǎn)(轉(zhuǎn)化為了一個二維的旋轉(zhuǎn)問題)员串。其中,沿著給定三個方向的旋轉(zhuǎn)矩陣是這個樣子的:
$$ \nonumber \begin{alignat}{1} R_x(\theta) &= \begin{bmatrix} 1 & 0 & 0 \ 0 & \cos \theta & -\sin \theta \[3pt] 0 & \sin \theta & \cos \theta \[3pt] \end{bmatrix} , R_y(\theta) &= \begin{bmatrix} \cos \theta & 0 & \sin \theta \[3pt] 0 & 1 & 0 \[3pt] -\sin \theta & 0 & \cos \theta \ \end{bmatrix} , R_z(\theta) &= \begin{bmatrix} \cos \theta & -\sin \theta & 0 \[3pt] \sin \theta & \cos \theta & 0\[3pt] 0 & 0 & 1\ \end{bmatrix} \end{alignat} $$
然后昼扛,旋轉(zhuǎn)矩陣表示為:
$$ R=R_z R_y R_x $$
這種方法的缺點之一就是復(fù)雜寸齐,且由于歐拉萬向角問題而表示不唯一。
2. 四元組(Quaternions)
四元組是擴(kuò)展自復(fù)數(shù)的一個概念抄谐,延伸自歐拉旋轉(zhuǎn)渺鹦。定義三個復(fù)變量 $i2=j2=k^2=-1$ ,然后把向量的各個分量表示為 $i, j, k$ 的系數(shù)蛹含,即 (2, 3, 4) 表示為 $2i+3j+4k$ 毅厚。一個圍繞單位向量 $\overrightarrow{u}=(u_x, u_y, u_z)=u_x i + u_y j + u_z k$的旋轉(zhuǎn)$\theta$角度的旋轉(zhuǎn),可以利用歐拉公式的擴(kuò)展來表達(dá):
$$ q = e^{\frac{\theta}{2}(u_x i + u_y j + u_z k)} = \cos \frac{\theta}{2} + (u_x i + u_y j + u_z k) \sin \frac{\theta}{2} $$
然后浦箱,利用四元組乘法(注意吸耿,此處不是矩陣乘法E贡摺),上式可以應(yīng)用于計算一個普通的三維點 $p=(p_x, p_y, p_z) = p_x i + p_y j + p_z k $ 的旋轉(zhuǎn):
$$ p' = q p q^{-1} $$
而 $p'=({p_x}', {p_y}', {p_z}')$ 是旋轉(zhuǎn)后的坐標(biāo)珍语。如果 $ \overrightarrow{u} $ 和 點 $p$ 是沿原點同方向的,那么該旋轉(zhuǎn)將繞 $\overrightarrow{u}$ 順時針旋轉(zhuǎn) $\theta$竖幔。
2.1 四元組的矩陣表示
四元組表達(dá)的旋轉(zhuǎn)也可以通過旋轉(zhuǎn)矩陣來表示板乙,即簡化上述 $$ p' = q p q^{-1} $$ 的操作。其得到的旋轉(zhuǎn)矩陣為:
$$ \begin{bmatrix} c + a_x^2 (1-c) & a_x a_y (1-c) - a_z s & a_x a_z (1-c) + a_y s \ a_y a_x (1-c) + a_z s & c + a_y^2 (1-c) & a_y a_z (1-c) - a_x s \ a_z a_x (1-c) - a_y s & a_z a_y (1-c) + a_x s & c + a_z^2 (1-c) \end{bmatrix} $$
其中拳氢,$s=\sin \theta, c = \cos \theta$ 募逞。對于一個旋轉(zhuǎn)四元組 $q=q_r+q_i i + q_j j + q_k k$,以上變量可以通過
$$ \begin{align} \theta & =2 \arccos q_r=2 \arcsin \sqrt{{q_i}2+{q_j}2+{q_k}^2} \nonumber \ (a_x, a_y, a_z) & =\frac{1}{\sin \frac{1}{2}\theta} (q_i, q_j, q_k) \nonumber \end{align}$$
得到馋评。
如果直接從四元組中的變量出發(fā)放接,也可以把矩陣表達(dá)為:
$$ \begin{bmatrix} 1 - 2 q_j^2 - 2 q_k^2 & 2 (q_i q_j - q_k q_r) & 2 (q_i q_k + q_j q_r) \ 2 (q_i q_j + q_k q_r) & 1 - 2 q_i^2 - 2 q_k^2 & 2 (q_j q_k - q_i q_r) \ 2 (q_i q_k - q_j q_r) & 2 (q_j q_k + q_i q_r) & 1 - 2 q_i^2 - 2 q_j^2 \end{bmatrix} $$
或(已知 $q_r$,可以通過變換式代換主軸線上的量)
$$ \begin{bmatrix} q_r^2 + q_i^2 - q_j^2 - q_k^2 & 2 (q_i q_j - q_k q_r) & 2 (q_i q_k + q_j q_r) \ 2 (q_i q_j + q_k q_r) & q_r^2 + q_j^2 - q_i^2 - q_k^2 & 2 (q_j q_k - q_i q_r) \ 2 (q_i q_k - q_j q_r) & 2 (q_j q_k + q_i q_r) & q_r^2 + q_k^2 - q_i^2 - q_j^2 \end{bmatrix} $$
上述兩個矩陣是等價的留特。
以上旋轉(zhuǎn)默認(rèn)物體繞著原點的旋轉(zhuǎn)纠脾,其他形式的旋轉(zhuǎn),可以把物體平移到相對坐標(biāo)系蜕青,再做四元組旋轉(zhuǎn)苟蹈,然后再把坐標(biāo)系變換回去。
2.2 四元組的矩陣恢復(fù)
從旋轉(zhuǎn)矩陣恢復(fù)四元組可以通過構(gòu)造矩陣求特征值為 1 的 特征向量(即四元組)右核。設(shè) $Q$ 是一個 $3\times 3$ 的旋轉(zhuǎn)矩陣慧脱,構(gòu)造矩陣:
$$ K = \frac13 \begin{bmatrix} Q_{xx}-Q_{yy}-Q_{zz} & Q_{yx}+Q_{xy} & Q_{zx}+Q_{xz} & Q_{yz}-Q_{zy} \ Q_{yx}+Q_{xy} & Q_{yy}-Q_{xx}-Q_{zz} & Q_{zy}+Q_{yz} & Q_{zx}-Q_{xz} \ Q_{zx}+Q_{xz} & Q_{zy}+Q_{yz} & Q_{zz}-Q_{xx}-Q_{yy} & Q_{xy}-Q_{yx} \ Q_{yz}-Q_{zy} & Q_{zx}-Q_{xz} & Q_{xy}-Q_{yx} & Q_{xx}+Q_{yy}+Q_{zz} \end{bmatrix} $$
如果 $Q$ 是一個純旋轉(zhuǎn)矩陣,那么$ K $ 將會有一個特征值為 1 的特征向量贺喝,該向量即四元組菱鸥。如果 $Q$ 不是一個純旋轉(zhuǎn)矩陣,那么我們求出最大的特征值所對應(yīng)的向量為四元組躏鱼,該四元組求得的旋轉(zhuǎn)矩陣將接近$Q$氮采。