旋轉矩陣

旋轉矩陣（Rotation matrix）是在乘以一個向量的時候有改變向量的方向但不改變大小的效果並保持了手性的矩陣。旋轉矩陣不包括點反演，點反演可以改變手性，也就是把右手坐標系改變成左手坐標系或反之。所有旋轉加上反演形成了正交矩陣的集合。旋轉可分為主動旋轉與被動旋轉。主動旋轉是指將向量逆時針圍繞旋轉軸所做出的旋轉。被動旋轉是對坐標軸本身進行的逆時針旋轉，它相當於主動旋轉的逆操作。

## 性質

設 $\mathbf{M}$ 是任何維的一般旋轉矩陣: $\mathbf{M}\in\mathbb{R}^{n \times n}$

$$\mathbf{a}^\top\cdot\mathbf{b} = \mathbf{(Ma)}^\top\cdot\mathbf{M}\mathbf{b}$$

$\mathbf{M}\,\mathbf{M}^{-1}=\mathbf{M}\,\mathbf{M}^\top=\mathcal{I}$ 這裡的 $\mathcal{I}$ 是單位矩陣。

- 一個矩陣是旋轉矩陣，若且唯若它是正交矩陣並且它的行列式是1。正交矩陣的行列式是 ±1；如果行列式是 −1，則它包含了一個反射而不是真旋轉矩陣。
- 旋轉矩陣是正交矩陣，如果它的列向量形成 $\mathbb{R}^{n}$ 的一個正交基，就是說在任何兩個列向量之間的標量積是零(正交性)而每個列向量的大小是單位一(單位向量)。

$$\mathbf{M}=\exp (\mathbf{A})=\sum_{k=0}^\infty \frac{\mathbf{A}^k}{k!}$$

這裡的指數是以泰勒級數定義的而 $\mathbf{A}^k$ 是以矩陣乘法定義的。矩陣A叫做旋轉的「生成元」。旋轉矩陣的李代數是它的生成元的代數，它就是斜對稱矩陣的代數。生成元可以通過 M 的矩陣對數來找到。

## 二維空間

在二維空間中，旋轉可以用一個單一的角 $\theta$ 定義。作為約定，正角表示逆時針旋轉。把笛卡爾坐標的列向量關於原點逆時針旋轉 $\theta$ 的矩陣是:

$$<pre> M(\theta) = \begin{bmatrix} \cos{\theta} & -\sin{\theta} \\ \sin{\theta} & \cos{\theta} \end{bmatrix} =\cos{\theta}\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} +\sin{\theta}\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} = \exp\left(\theta\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix}\right) </pre>$$

## 三維空間

在三維空間中，旋轉矩陣有一個等於單位1的實特徵值。旋轉矩陣指定關於對應的特徵向量的旋轉(歐拉旋轉定理)。如果旋轉角是 θ，則旋轉矩陣的另外兩個(複數)特徵值是 exp(iθ) 和 exp(-iθ)。從而得出 3 維旋轉的跡數等於 1 + 2 cos(θ)，這可用來快速的計算任何 3 維旋轉的旋轉角。

3 維旋轉矩陣的生成元是三維斜對稱矩陣。因為只需要三個實數來指定 3 維斜對稱矩陣，得出只用三個實數就可以指定一個 3 維旋轉矩陣。

### 旋轉

生成旋轉矩陣的一種簡單方式是把它作為三個基本旋轉的序列複合。關於右手笛卡爾坐標系的 x-, y- 和 z-軸的旋轉分別叫做 roll, pitch 和 yaw 旋轉。因為這些旋轉被表達為關於一個軸的旋轉，它們的生成元很容易表達。

$<pre> \mathcal{R}_x(\theta_x)= \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos{\theta_x} & -\sin{\theta_x} \\ 0 & \sin{\theta_x} & \cos{\theta_x} \end{bmatrix} =\exp \left(\theta_x \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & -1 \\ 0 & 1 & 0 \end{bmatrix}\right) </pre>$ 這裡的 $\theta_x$ 是 roll 角，和右手螺旋的方向相反（在yz平面順時針）。

$<pre> \mathcal{R}_y(\theta_y)= \begin{bmatrix} \cos{\theta_y} & 0 & \sin{\theta_y} \\ 0 & 1 & 0 \\ -\sin{\theta_y} & 0 & \cos{\theta_y} \end{bmatrix} =\exp\left(\theta_y \begin{bmatrix} 0 & 0 & 1 \\ 0 & 0 & 0 \\ -1 & 0 & 0 \end{bmatrix}\right) </pre>$ 這裡的 $\theta_y$ 是 pitch 角，和右手螺旋的方向相反（在zx平面順時針）。

$<pre> \mathcal{R}_z(\theta_z)= \begin{bmatrix} \cos{\theta_z} & -\sin{\theta_z} & 0 \\ \sin{\theta_z} & \cos{\theta_z} & 0 \\ 0 & 0 & 1 \end{bmatrix} =\exp\left(\theta_z \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix}\right) </pre>$ 這裡的 $\theta_z$ 是 yaw 角，和右手螺旋的方向相反（在xy平面順時針）。

<image>

在飛行動力學中，roll, pitch 和 yaw 角通常分別採用符號 $\gamma$, $\alpha$, 和 $\beta$；但是為了避免混淆於歐拉角這裡使用符號 $\theta_x$, $\theta_y$ 和 $\theta_z$。

任何 3 維旋轉矩陣 $\mathcal{M}\in\mathbb{R}^{3\times 3}$ 都可以用這三個角 $\theta_x$, $\theta_y$, 和 $\theta_z$ 來刻畫，並且可以表示為 roll, pitch 和 yaw 矩陣的乘積。

$\mathcal{M}$ 是在 $\mathbb{R}^{3\times 3}\,$ 中的旋轉矩陣 $\Leftrightarrow\,\exist\,\theta_x,\theta_y,\theta_z\in[0\ldots\pi):\, \mathcal{M}=\mathcal{R}_z(\theta_z)\,\mathcal{R}_y(\theta_y)\,\mathcal{R}_x(\theta_x)$

在 $\mathbb{R}^3$ 中所有旋轉的集合，加上複合運算形成了旋轉群 SO(3)。這裡討論的矩陣接著提供了這個群的群表示。更高維的情況可參見 Givens旋轉。

### 角-軸表示和四元數表示

在三維中，旋轉可以通過單一的旋轉角 $\theta$ 和所圍繞的單位向量方向 $\hat{\mathbf{v}} = (x,y,z)$ 來定義。

$$\mathcal{M}(\hat{\mathbf{v}},\theta) = \begin{bmatrix} <pre> \cos \theta + (1 - \cos \theta) x^2 & (1 - \cos \theta) x y - (\sin \theta) z & (1 - \cos \theta) x z + (\sin \theta) y </pre> \\ <pre> (1 - \cos \theta) y x + (\sin \theta) z & \cos \theta + (1 - \cos \theta) y^2 & (1 - \cos \theta) y z - (\sin \theta) x </pre> \\ <pre> (1 - \cos \theta) z x - (\sin \theta) y & (1 - \cos \theta) z y + (\sin \theta) x & \cos \theta + (1 - \cos \theta) z^2 </pre> \end{bmatrix}$$

這個旋轉可以簡單的以生成元來表達:

$$\mathcal{M}(\hat{\mathbf{v}},\theta) <pre> = \exp\left( \theta\begin{bmatrix} 0 & -z & y \\ z & 0 & -x \\ -y & x & 0 \\ </pre> \end{bmatrix}\right) <pre>$$

在運算於向量 r 上的時候，這等價於Rodrigues旋轉公式：

$$\mathcal{M} \cdot \mathbf{r} = \mathbf{r} \,\cos(\theta)+\hat{\mathbf{v}}\times \mathbf{r}\, \sin(\theta)+(\hat{\mathbf{v}}\cdot\mathbf{r})\hat{\mathbf{v}}(1-\cos(\theta))$$

角-軸表示密切關聯於四元數表示。依據軸和角，四元數可以給出為正規化四元數 Q:

$$Q=(xi+yj+zk)\sin(\theta/2)+\cos(\theta/2)\,$$

這裡的 i, j 和 k 是 Q 的三個虛部。

### 歐拉角表示

在三維空間中，旋轉可以通過三個歐拉角 $(\alpha,\beta,\gamma)$ 來定義。有一些可能的歐拉角定義，每個都可以依據 roll, pitch 和 yaw 的複合來表達。依據 "x-y-z" 歐拉角，在右手笛卡爾坐標中的旋轉矩陣可表達為:

$$\mathcal{M}(\alpha,\beta,\gamma)=\mathcal{R}_z(\gamma)\mathcal{R}_y(\beta) \mathcal{R}_x(\alpha)$$

進行乘法運算生成:

$$\begin{align} \mathcal{M}(\alpha,\beta,\gamma) &= <pre> \begin{bmatrix} \cos \gamma & -\sin \gamma & 0 \\ \sin \gamma & \cos \gamma & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \cos \beta & 0 & \sin \beta \\ 0 & 1 & 0 \\ -\sin \beta & 0 & \cos \beta \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos \alpha & -\sin \alpha \\ 0 & \sin \alpha & \cos \alpha \end{bmatrix} \\ &= \begin{bmatrix} \cos \gamma \cos \beta & -\sin \gamma & \cos \gamma \sin \beta \\ \sin \gamma \cos \beta & \cos \gamma & \sin \gamma \sin \beta \\ -\sin \beta & 0 & \cos \beta \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos \alpha & -\sin \alpha \\ 0 & \sin \alpha & \cos \alpha \end{bmatrix} \\ &= \begin{bmatrix} \cos \gamma \cos \beta & -\sin \gamma \cos \alpha + \cos \gamma \sin \beta \sin \alpha & \sin \gamma \sin \alpha + \cos \gamma \sin \beta \cos \alpha \\ \sin \gamma \cos \beta & \cos \gamma \cos \alpha + \sin \gamma \sin \beta \sin \alpha & -\cos \gamma \sin \alpha + \sin \gamma \sin \beta \cos \alpha \\ -\sin \beta & \cos \beta \sin \alpha & \cos \beta \cos \alpha \end{bmatrix} </pre> \end{align}$$

### 對稱保持 SVD 表示

對旋轉軸 $q$ 和旋轉角 $\theta$，旋轉矩陣

$$\mathcal{M} = qq^T+QGQ^T$$

這裡的 $Q=\begin{bmatrix}q_1, & q_2\end{bmatrix}$ 的縱列張開正交於 $q$ 的空間而 $G$ 是 $\theta$ 度 Givens 旋轉，就是說

$$G = \begin{bmatrix} \cos\theta & \sin\theta\\ -\sin\theta & \cos\theta \end{bmatrix}$$

## 外部連結

- Rotation matrices at Mathworld