← 返回目錄首頁 📂 NCUT-G102/G102_1013_Quiz_Copilot.html
🔄 快速切換網頁:
✦ 贊助商廣告 / SPONSORED ✦
引導式解題,不先公布答案

繞任意軸旋轉矩陣

從題意判讀、建立正交基底,到矩陣乘法與最後驗證,每一步都說明「做什麼」及「為什麼」。

題目資料

旋轉軸方向為 \(r_0=[1,2,3]^T\),旋轉角為 \(\alpha=1.5\) radians。講義指定:

\[s=\frac{\bar s}{\|\bar s\|}\]
\[t=r\times s\]
\[M=\begin{bmatrix}r^T\\s^T\\t^T\end{bmatrix}\]
\[X=M^TR_x(\alpha)M\]

先不要代數字。先理解任務:建立一套以旋轉軸 \(r\) 為第一軸的正交座標系,再於該座標系繞 x 軸旋轉,最後轉回原座標。

0

先判斷:題目的 r 能直接使用嗎?

目標:讓旋轉軸成為長度為 1 的單位向量。

  1. 題目給的是「方向」\(r_0=(1,2,3)^T\),不一定是單位向量。
  2. 計算長度:把各分量平方、相加,再開根號。
\[\|r_0\|\]
\[=\sqrt{1^2+2^2+3^2}\]
\[=\sqrt{14}\]

所以要以長度除每個分量:

\[r=\frac{r_0}{\|r_0\|}\]
\[=\frac1{\sqrt{14}}\begin{bmatrix}1\\2\\3\end{bmatrix}\]
為什麼要正規化? 後面需要讓 \(r,s,t\) 成為正交「單位」基底,才能使用 \(M^{-1}=M^T\)。
1

依講義規則建立 s

目標:找一個與 \(r\) 垂直,而且長度為 1 的向量。

  1. 比較 \(|r_x|,|r_y|,|r_z|\)。因為三項都有相同分母 \(\sqrt{14}\),只需比較 \(1,2,3\)。
  2. 最小的是 \(|r_x|\),所以將 x 分量設為 0。
  3. 交換剩下的 y、z 分量,再將交換後的第一項取負。
\[\bar s=(0,-r_z,r_y)^T\]
\[=\frac1{\sqrt{14}}(0,-3,2)^T\]

接著求 \(\bar s\) 的長度。共同因子會在正規化時消去,因此可直接正規化 \((0,-3,2)^T\):

\[\sqrt{0^2+(-3)^2+2^2}=\sqrt{13}\]
\[s=\frac1{\sqrt{13}}\begin{bmatrix}0\\-3\\2\end{bmatrix}\]
立即檢查垂直:分子內積為 \(1(0)+2(-3)+3(2)=0\),所以 \(r\cdot s=0\)。
2

以外積建立第三個方向 t

目標:找同時垂直於 \(r\) 與 \(s\) 的第三個單位向量。

\[t=r\times s\]
\[=\frac1{\sqrt{14}\sqrt{13}}\begin{vmatrix}\mathbf i&\mathbf j&\mathbf k\\1&2&3\\0&-3&2\end{vmatrix}\]

分別展開三個分量:

\[t=\frac1{\sqrt{182}}\begin{bmatrix}13\\-2\\-3\end{bmatrix}\]
因 \(r\) 與 \(s\) 已互相垂直且皆為單位向量,\(\|r\times s\|=\|r\|\|s\|\sin90^\circ=1\),所以不需再次正規化。
3

把三個基底組成 M

依講義,\(r^T,s^T,t^T\) 分別放在三個「橫列」:

\[M=\begin{bmatrix}r^T\\s^T\\t^T\end{bmatrix}\]
\[M=\begin{bmatrix}\frac1{\sqrt{14}}&\frac2{\sqrt{14}}&\frac3{\sqrt{14}}\\0&-\frac3{\sqrt{13}}&\frac2{\sqrt{13}}\\\frac{13}{\sqrt{182}}&-\frac2{\sqrt{182}}&-\frac3{\sqrt{182}}\end{bmatrix}\]

轉置時,只要把橫列改成直行:

\[M^T=\begin{bmatrix}\frac1{\sqrt{14}}&0&\frac{13}{\sqrt{182}}\\\frac2{\sqrt{14}}&-\frac3{\sqrt{13}}&-\frac2{\sqrt{182}}\\\frac3{\sqrt{14}}&\frac2{\sqrt{13}}&-\frac3{\sqrt{182}}\end{bmatrix}\]
觀念:因三個橫列互相垂直且長度為 1,所以 \(MM^T=M^TM=I\)。因此 \(M^{-1}=M^T\)。
4

在新座標系繞 x 軸旋轉

在 \((r,s,t)\) 座標系中,第一軸就是旋轉軸 \(r\),因此使用標準 x 軸旋轉矩陣:

\[R_x(\alpha)=\begin{bmatrix}1&0&0\\0&\cos\alpha&-\sin\alpha\\0&\sin\alpha&\cos\alpha\end{bmatrix}\]
\[\cos(1.5)\approx0.070737\]
\[\sin(1.5)\approx0.997495\]
\[R_x(1.5)\approx\begin{bmatrix}1&0&0\\0&0.070737&-0.997495\\0&0.997495&0.070737\end{bmatrix}\]

矩陣右側的 \(M\) 先作用,把原座標轉成新基底座標;中間的 \(R_x\) 執行旋轉;左側的 \(M^T\) 再轉回原座標。

5

分兩階段做矩陣乘法

不要一次乘三個矩陣。先算 \(A=R_x(1.5)M\),再算 \(X=M^TA\)。

5-1 先算 A

矩陣乘法規則是「左矩陣的橫列」乘「右矩陣的直行」。例如 \(A_{21}\):

\[A_{21}=0(0.267261)+0.070737(0)-0.997495(0.963624)\]
\[A_{21}\approx-0.961210\]

依相同方法完成九個位置:

\[A=R_x(1.5)M\]
\[A\approx\begin{bmatrix}0.267261&0.534522&0.801784\\-0.961210&0.089022&0.261056\\0.068164&-0.840453&0.537580\end{bmatrix}\]

5-2 再算 X

現在計算 \(X=M^TA\)。示範第一列的三個元素:

\[X_{11}=0.267261(0.267261)+0(-0.961210)+0.963624(0.068164)\]
\[X_{12}=0.267261(0.534522)+0(0.089022)+0.963624(-0.840453)\]
\[X_{13}=0.267261(0.801784)+0(0.261056)+0.963624(0.537580)\]

其餘兩列依完全相同方式計算。請先自行完成,再按下按鈕核對。

6

最後不要只看數字,要驗證

  1. 軸不變:應滿足 \(Xr=r\)。這表示位於旋轉軸上的向量不會被移動。
  2. 保持長度:應滿足 \(X^TX=I\)。這表示旋轉不會拉長或壓縮物體。
  3. 右手旋轉:應滿足 \(\det(X)=1\)。
  4. 跡的檢查:三維旋轉矩陣滿足 \(\operatorname{tr}(X)=1+2\cos\alpha\)。
\[\operatorname{tr}(X)\approx0.137113+0.336241+0.668120\]
\[\approx1.141474\]
\[1+2\cos(1.5)\approx1.141474\]

兩者一致,配合 \(Xr=r\)、\(X^TX=I\) 與 \(\det X=1\),可確認計算結果合理。

所有小數保留至 6 位,因此手算驗證時可能出現約 \(10^{-6}\) 的四捨五入誤差。