這個計算機的功能
3D 座標旋轉計算機會算出空間中的一個點,在你將它繞 X、Y 或 Z 軸旋轉後的新位置。它採用右手座標系與右手定則的正負號慣例,因此當你沿著旋轉軸的正向往原點方向看過去時,正角度代表逆時針旋轉。這純粹是解析幾何的運算,適用於各個領域——無論是物理、機器人學、電腦繪圖、CAD 還是工程設計,都能通用。
使用方法
先輸入該點的起始座標(初始 x、y、z)。接著選擇角度的單位是「度」還是「弧度」。然後最多可定義三個旋轉步驟,每個步驟各有一個旋轉軸與一個角度。步驟會依序套用:步驟 1 作用在原始點上,步驟 2 作用在步驟 1 的結果上,依此類推。若想略過某個步驟,將該步驟的角度留空或設為 0 即可。若只需要單次旋轉,只要填寫步驟 1 就好。
公式說明
對每個步驟而言,設 \(\theta\) 為以弧度表示的角度,並令 \(c = \cos\theta\)、\(s = \sin\theta\)。繞 Z 軸旋轉時 \(z\) 保持不變,並將 \((x, y)\) 對應為 \((x\cdot c - y\cdot s,\; x\cdot s + y\cdot c)\)。
$$x' = x\cos\theta - y\sin\theta,\quad y' = x\sin\theta + y\cos\theta,\quad z' = z$$繞 X 軸旋轉時 \(x\) 保持不變;繞 Y 軸旋轉時 \(y\) 保持不變,其餘兩個座標都以相同方式混合運算。
$$\begin{aligned} x' &= x \\ y' &= y\cos\theta - z\sin\theta \\ z' &= y\sin\theta + z\cos\theta \end{aligned}$$$$x' = x\cos\theta + z\sin\theta,\quad y' = y,\quad z' = -x\sin\theta + z\cos\theta$$將多個旋轉組合起來,等同於把它們的旋轉矩陣相乘;不過逐步套用到向量上,可以避免搞錯先後順序。
$$R_z(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}$$
實際範例
取點 \((1, 0, 1)\),將它繞 Z 軸旋轉 90°。此時 \(\theta = \pi/2\),所以 \(c = 0\)、\(s = 1\)。於是 \(x' = 1\cdot 0 - 0\cdot 1 = 0\),\(y' = 1\cdot 1 + 0\cdot 0 = 1\),而 \(z'\) 維持不變為 \(1\)。最終結果為 \((0, 1, 1)\)。
常見旋轉角度值
每個旋轉矩陣的項目只取決於 \(\cos\theta\) 和 \(\sin\theta\)。該表列出了最常見角度的精確值,以便您可以直接將其代入 \(R_X\)、\(R_Y\) 或 \(R_Z\)。小數近似值顯示到小數點後四位。
| \(\theta\) (度) | \(\theta\) (弧度) | \(\cos\theta\) | \(\sin\theta\) |
|---|---|---|---|
| 0° | 0 | 1 | 0 |
| 30° | \(\pi/6\) | \(\tfrac{\sqrt3}{2}\approx0.8660\) | \(\tfrac12=0.5\) |
| 45° | \(\pi/4\) | \(\tfrac{\sqrt2}{2}\approx0.7071\) | \(\tfrac{\sqrt2}{2}\approx0.7071\) |
| 60° | \(\pi/3\) | \(\tfrac12=0.5\) | \(\tfrac{\sqrt3}{2}\approx0.8660\) |
| 90° | \(\pi/2\) | 0 | 1 |
| 180° | \(\pi\) | −1 | 0 |
| 270° | \(3\pi/2\) | 0 | −1 |
注意 \(180^\circ\) 旋轉會改變垂直於軸的兩個坐標的符號,而 \(270^\circ\) 等同於 \(-90^\circ\)(從正軸向下看時為順時針方向旋轉四分之一圈)。
關鍵術語與變數
- 右手坐標系
- 一個三維框架,其中 X、Y 和 Z 軸的方向使得將右手的手指從 +X 指向 +Y 時,大拇指指向 +Z。這是標準的數學和物理習慣;這些旋轉矩陣假設使用該習慣。
- 右手法則
- 旋轉正方向的助記符:將右手大拇指指向旋轉軸的正方向,手指的捲曲方向就是該軸旋轉的正(逆時針)方向。
- 旋轉矩陣
- 一個 \(3\times3\) 正交矩陣,行列式為 \(+1\),它繞固定軸旋轉向量而不改變其長度。這裡 \(R_X\)、\(R_Y\) 和 \(R_Z\) 分別繞 X、Y 和 Z 軸旋轉。
- \(\theta\) (西塔),旋轉角度
- 繞選定軸旋轉的量。以度或弧度為單位;該工具在評估 \(\cos\theta\) 和 \(\sin\theta\) 之前使用 \(\theta_{\text{弧度}} = \theta_{\text{度}}\cdot\pi/180\) 在內部轉換度。
- 旋轉軸
- 固定直線(X、Y 或 Z),其上的點保持不變,而其他一切都繞其旋轉。在此工具中,每一步的軸選擇為 0 = X、1 = Y、2 = Z。
- 正方向 / 逆時針方向
- 正角度會產生逆時針旋轉(從軸的正端向原點方向看時)。負角度則相反(順時針)。
- 輸出坐標 \(x'\)、\(y'\)、\(z'\)
- 旋轉點 \(\mathbf{p}' = R\,\mathbf{p}\) 的分量。當有一個或多個連續旋轉時,\(\mathbf{p}' = R_{a_3}(\theta_3)\,R_{a_2}(\theta_2)\,R_{a_1}(\theta_1)\,\mathbf{p}\),其中最右邊的矩陣首先被應用。
常見問題
正向旋轉是哪個方向?正向指的是當你從旋轉軸的正向往原點看時的逆時針方向(即右手定則)。
旋轉的順序會有影響嗎?會。3D 旋轉不具交換性,因此「先繞 X 再繞 Z」通常與「先繞 Z 再繞 X」結果不同。本工具一律先套用步驟 1。
為什麼有些結果顯示 0,而不是一個很小的數值?像 \(\cos(90°)\) 這類值在浮點數運算中並非剛好等於 0,因此本工具會把接近 0 的輸出整理為 0,讓結果更清楚易讀。