題目給定條件與待求清單
- (1) 正交單位向量 $\mathbf{s}$ 待求
- (2) 外積單位向量 $\mathbf{t} = \mathbf{r} \times \mathbf{s}$ 待求
- (3) 基底旋轉矩陣 $\mathbf{M}$ 待求
- (4) 轉置矩陣 $\mathbf{M}^T$ 待求
- (5) 最終旋轉矩陣 $\mathbf{X} = \mathbf{M}^T \mathbf{R}_x(\alpha) \mathbf{M}$ 待求
演算法幾何原理:為什麼這樣能求出任意軸旋轉?
出自經典教科書《Real-Time Rendering》第 4 章與 Goldman (1992) 旋轉推導
A 尋找最小分量置 0 的目的
若直接找與向量正交的向量,容易發生除以 0 或數值不穩定的情況。演算法將絕對值最小的分量設為 0,其餘兩分量對調並將前項變號,利用:
$(r_y)(-r_z) + (r_z)(r_y) = 0$
保證所得向量 $\bar{\mathbf{s}}$ 與 $\mathbf{r}$ 的內積恆為 0,即 $\mathbf{s} \perp \mathbf{r}$。
B 構建正交基底 (Orthonormal Basis)
將 $\bar{\mathbf{s}}$ 單位化得 $\mathbf{s}$,再透過外積 $\mathbf{t} = \mathbf{r} \times \mathbf{s}$ 獲得第三個互斥垂直向量。 此時 $(\mathbf{r}, \mathbf{s}, \mathbf{t})$ 構成一個三維空間的規範正交基底。
C 基底轉換三步驟 $\mathbf{X} = \mathbf{M}^T \mathbf{R}_x(\alpha) \mathbf{M}$
1. 矩陣 $\mathbf{M}$ 將軸向 $\mathbf{r}$ 對齊到標準坐標軸的 $X$ 軸。
2. $\mathbf{R}_x(\alpha)$ 執行繞 $X$ 軸旋轉 $\alpha$ 弧度。
3. 逆轉換矩陣 $\mathbf{M}^{-1} = \mathbf{M}^T$ 將坐標系旋轉回原來的位置。
在《Real-Time Rendering》原書中,該公式的前提為「假設旋轉軸 $\mathbf{r}$ 已經為單位向量 ($\|\mathbf{r}\| = 1$)」。
白板上給定未單位化的 $\mathbf{r} = [1, 2, 3]$(長度 $\|\mathbf{r}\| = \sqrt{14}$)。若直接代入不除以長度,$\mathbf{M}$ 的第一列長度為 $\sqrt{14}$,將導致 $\mathbf{M}$ 不是正交矩陣($\mathbf{M}^T \ne \mathbf{M}^{-1}$),乘積會被放大多倍。
因此,正規教科書標準解法必須先將 $\mathbf{r}$ 單位化。下方我們以「標準圖學正規解」為主要解題流程,並在文末完整附上「若未先單位化 $\mathbf{r}$ 的代入結果」供比對。
1 第一步:求解正交單位向量 $\mathbf{s}$
根據投影片規則:找出 $\mathbf{r}$ 絕對值最小的分量,並將其設為 0;將其餘兩個分量對調,並將對調後的第一個分量變號。
各分量絕對值:$|r_x| = 1,\quad |r_y| = 2,\quad |r_z| = 3$
因為 $|r_x| < |r_y|$ 且 $|r_x| < |r_z|$($1 < 2$ 且 $1 < 3$),符合第一種條件分情況!
代入投影片公式第一條分段:
驗證兩者是否正交(垂直):
計算 $\bar{\mathbf{s}}$ 的範數(長度)並進行單位化:
2 第二步:求解外積向量 $\mathbf{t} = \mathbf{r} \times \mathbf{s}$
為了構成三維標準正交基底(Orthonormal Frame),第三個軸向向量 $\mathbf{t}$ 必須同時垂直於 $\mathbf{r}$ 與 $\mathbf{s}$,利用外積求得。
計算外積行列式:
分量逐項展開:
驗證長度:$\|\mathbf{t}\| = \sqrt{\frac{169 + 4 + 9}{182}} = \sqrt{\frac{182}{182}} = 1$(長度為 1,標準單位向量)。
3 第三步:組裝基底轉換矩陣 $\mathbf{M}$
根據公式 $\mathbf{M} = \begin{pmatrix} \mathbf{r}^T \\ \mathbf{s}^T \\ \mathbf{t}^T \end{pmatrix}$,矩陣的三個列向量(Rows)分別由 $\mathbf{r}, \mathbf{s}, \mathbf{t}$ 排列組成:
4 第四步:求解轉置矩陣 $\mathbf{M}^T$
將 $\mathbf{M}$ 的行與列對調即可得轉置矩陣 $\mathbf{M}^T$。因為 $\mathbf{M}$ 是正交矩陣,其逆矩陣等於轉置矩陣,即 $\mathbf{M}^{-1} = \mathbf{M}^T$:
5 第五步:計算最終變換矩陣 $\mathbf{X} = \mathbf{M}^T \mathbf{R}_x(\alpha) \mathbf{M}$
旋轉角度給定為 $\alpha = 1.5\text{ radians}$,繞 $X$ 軸基本旋轉矩陣 $\mathbf{R}_x(\alpha)$ 為:
驗證:投影片第二張 Goldman [1992] / Rodrigues 旋轉公式的完美對應
由幾何代數性質,基底對齊運算 $\mathbf{X} = \mathbf{M}^T \mathbf{R}_x(\alpha) \mathbf{M}$ 乘開後的結果,在數學上恆等於投影片第二張展示的 Goldman 旋轉矩陣 $\mathbf{R}$:
✓ 旋轉矩陣特徵檢驗:行列式 $\det(\mathbf{X}) = 1.0000$;跡數 $\text{Tr}(\mathbf{X}) = 0.1371 + 0.3362 + 0.6681 = 1.1415$(理論值 $1 + 2\cos(1.5) = 1 + 2(0.0707) = 1.1415$ 吻合!)。
兩種考情情況對照表(避免教授評分標準不一扣分)
部分考試或教授出題時,可能單純按黑板符號代入而忽略單位化,下表將「正規標準解(推薦)」與「未單位化直接代入」兩組答案完整並列:
| 題目要求 | 標準正規解($\mathbf{r}$ 為單位向量)★推薦 | 備用:若題目認定 $\mathbf{r}=[1,2,3]$ 不需單位化 |
|---|---|---|
| (1) $\mathbf{s}$ | $(0, -\frac{3}{\sqrt{13}}, \frac{2}{\sqrt{13}}) \approx [0, -0.8321, 0.5547]$ | $(0, -\frac{3}{\sqrt{13}}, \frac{2}{\sqrt{13}}) \approx [0, -0.8321, 0.5547]$(相同,因分子分母長度相消) |
| (2) $\mathbf{t}$ | $(\frac{13}{\sqrt{182}}, -\frac{2}{\sqrt{182}}, -\frac{3}{\sqrt{182}}) \approx [0.9636, -0.1483, -0.2224]$ | $\mathbf{r} \times \mathbf{s} = (\sqrt{13}, -\frac{2}{\sqrt{13}}, -\frac{3}{\sqrt{13}}) \approx [3.6056, -0.5547, -0.8321]$ |
| (3) $\mathbf{M}$ | 列向量皆為單位向量,為標準正交矩陣 | 第一列為 $[1, 2, 3]$,第三列長度為 $\sqrt{14}$ |
| (4) $\mathbf{M}^T$ | $\mathbf{M}$ 的行列互換(滿足 $\mathbf{M}^T = \mathbf{M}^{-1}$) | $\mathbf{M}$ 的行列互換(但此時 $\mathbf{M}^T \ne \mathbf{M}^{-1}$) |
| (5) $\mathbf{X}$ | 保距的旋轉矩陣($\det=1$),完全符合 Goldman 公式 | 含非單位縮放因數,非純旋轉矩陣 |
3D 空間正交基底 $(\mathbf{r}, \mathbf{s}, \mathbf{t})$ 幾何互動模擬
滑鼠按住左鍵可旋轉視角、滾輪可縮放。觀察 $\mathbf{r}, \mathbf{s}, \mathbf{t}$ 形成的三維互垂坐標軸與繞軸旋轉。
任意參數動態試算機 (Live Matrix Calculator)
輸入任意旋轉軸向量與旋轉角,系統將立即按該演算法自動計算 $s, t, M, M^T, X$。