# 笛卡爾坐標系的轉換 ###### 標籤: `進階`, `三維空間`, `旋轉矩陣` ## 問題描述 考慮三個三維笛卡爾坐標系 $C$, $R$ 和 $F$, 以及一物體 $O$,已知: $(a)$ $O$ 相對於 $C$ 的 $z$ 軸正向之 $x$ 方向與 $-y$ 方向的偏差角 $\alpha$ 和 $\beta$ $(b)$ $O$ 相對於 $F$ 的位置向量 $\vec s$ $(c)$ $C$ 的原點相對於 $R$ 的位置向量 $\vec r$ $(d)$ $C$ 的 $z$ 軸相對於 $R$ 的單位方向向量 $\hat v$ $(e)$ $C$ 的 $x$ 軸平行於 $R$ 的 $xy$ 平面 $(f)$ $R$ 的 $z$ 軸平行於 $F$ 的 $z$ 軸 $(g)$ $R$ 的原點在 $F$ 的 $xy$ 平面上 $(h)$ $R$ 相對於 $F$ 的 $x, y$ 軸之夾角 $\theta$ 求 $R$ 的原點相對於 $F$ 的位置向量 $\vec t$ 。 ## 解題步驟 ### Step 1: 分析題目 定義另一個完整的笛卡爾坐標系需要有其相對於當前的笛卡爾坐標系之**位置 (Position)** 與**位向 (Orientation)**,位置表示該坐標系的原點相對於當前坐標系的位置向量 (或座標),而位向則表示該坐標系的座標軸相對於當前坐標系的座標軸之夾角。 通過 $(f) (g) (h)$,我們僅能得知 $R$ 相對於 $F$ 的位向與部分的位置資訊 (在 $xy$ 平面上),但尚不能確定其位置。因此,我們勢必得通過 $O$ 和 $C$ 的相關資訊來推得。 通過 $(a)$,我們可以得知 $O$ 相對於 $C$ 的**方向**向量,但尚無法得知其位置向量。 通過 $(c)(d)(e)$,我們可以得知 $C$ 相對於 $R$ 的完整資訊 (位置與位向),因此我們便能夠將任何物體在 $C$ 與 $R$ 之間轉換。 也就是說,我們應當能夠利用 $(a)$ 與 $(f)(g)(h)$ 所提供的部分資訊結合 $(b)$ 推導出答案。 --- ![Untitled (2)](https://hackmd.io/_uploads/BkX1FjbBA.png) ### Step 2: 建立 $C$ 與 $R$ 的轉換 接著,讓我們先建立 $C$ 和 $R$ 之間的坐標系變換,以便後續作業。 定義 $R$ 的坐標軸單位向量為 $\hat i_r$, $\hat j_r$, $\hat k_r$,$C$ 的坐標軸單位向量為 $\hat i_c$, $\hat j_c$, $\hat k_c$,則根據 $(d)$,有: $$\hat k_c=\hat v = v_x\hat i_r + v_y\hat j_r + v_z\hat k_r \tag{1}$$ 根據 $(e)$ 可知 $\hat i_c$ 垂直 $\hat k_r$;$\hat i_c$ 也垂直同為座標軸向量的 $\hat k_c$,定義向右為正,故: $$\hat i_c={\hat k_c \times \hat k_r \over \Vert \hat k_c \times \hat k_r \Vert} = {v_y \over \sqrt{v_x^2+v_y^2}}\hat i_r - {v_x \over \sqrt{v_x^2+v_y^2}} \hat j_r \tag{2}$$ 有了 $\hat i_c$ 與 $\hat k_c$,我們便可以定義 $\hat j_c$ 為: $$\hat j_c={\hat k_c \times \hat i_c \over \Vert \hat k_c \times \hat i_c \Vert} = {v_xv_z \over \sqrt{v_x^2+v_y^2}}\hat i_r + {v_yv_z \over \sqrt{v_x^2+v_y^2}}\hat j_r - \sqrt{v_x^2+v_y^2}\ \hat k_r \tag{3}$$ 將 $(1), (2), (3)$ 寫成矩陣形式可得: \begin{equation} \begin{pmatrix} \hat i_c & \hat j_c & \hat k_c \\ \end{pmatrix} = \begin{pmatrix} \hat i_r & \hat j_r & \hat k_r \\ \end{pmatrix} \begin{pmatrix} v_y \over \sqrt{v_x^2+v_y^2} & v_xv_z \over \sqrt{v_x^2+v_y^2} & v_x \\ -v_x \over \sqrt{v_x^2+v_y^2} & v_yv_z \over \sqrt{v_x^2+v_y^2} & v_y \\ 0 & - \sqrt{v_x^2+v_y^2} & v_z \\ \end{pmatrix} \tag{4} \end{equation} 定義從 $C$ 轉換至 $R$ 之變換矩陣 $T_{c \rightarrow r}$ 為: \begin{equation} T_{c \rightarrow r}= \begin{pmatrix} v_y \over \sqrt{v_x^2+v_y^2} & v_xv_z \over \sqrt{v_x^2+v_y^2} & v_x \\ -v_x \over \sqrt{v_x^2+v_y^2} & v_yv_z \over \sqrt{v_x^2+v_y^2} & v_y \\ 0 & - \sqrt{v_x^2+v_y^2} & v_z \\ \end{pmatrix} \tag{5} \end{equation} 考慮一位置向量 $\vec p = p_x \hat i_c+p_y \hat j_c + p_z \hat k_c$,則恆有: \begin{equation} \vec p = \begin{pmatrix} \hat i_c & \hat j_c & \hat k_c \\ \end{pmatrix} \begin{pmatrix} p_x \\ p_y \\ p_z \\ \end{pmatrix} = \begin{pmatrix} \hat i_r & \hat j_r & \hat k_r \\ \end{pmatrix} \; T_{c \rightarrow r} \begin{pmatrix} p_x \\ p_y \\ p_z \\ \end{pmatrix} = \begin{pmatrix} \hat i_r & \hat j_r & \hat k_r \\ \end{pmatrix} \begin{pmatrix} p_x^{\prime} \\ p_y^{\prime} \\ p_z^{\prime} \\ \end{pmatrix} \tag{6} \end{equation} \begin{equation} \begin{pmatrix} p_x^{\prime} \\ p_y^{\prime} \\ p_z^{\prime} \\ \end{pmatrix} = T_{c \rightarrow r} \begin{pmatrix} p_x \\ p_y \\ p_z \\ \end{pmatrix} \tag{7} \end{equation} 然而,根據 $(c)$ 可以得知 $C$ 的原點和 $R$ 的原點有位移 $\vec r$,因此完整的轉移公式應為: $$\vec p^{(r)}=T_{c \rightarrow r} \ \vec p^{(c)} + \vec r \tag{8}$$ 其中 $^{(x)}$ 表示在 $X$ 坐標系下向量的矩陣表示。 ### Step 3: 考慮 $R$ 與 $F$ 的轉換 根據 $(f)$,可得: $$\hat f$$ ### Step 4: 考慮 $O$ 在 $C, R, F$ 下的位置 假設 $O$ 的位置向量為 $\vec u=u_x\hat i_c+u_y \hat j_c + u_z \hat k_c$,那麼根據 $(a)$,其在 $xz$ 平面上之投影向量 $\vec u_{xz}=u_x\hat i_c + u_z \hat k_c$ 應和 $z$ 軸夾 $\alpha$ 角;其在 $yz$ 平面上之投影向量 $\vec u_{yz}=u_y \hat j_c + u_z \hat k_c$ 應和 $z$ 軸夾 $-\beta$ 角,即: $$ u_x = u_z \tan{\alpha} \tag{9}$$ $$ u_y = u_z \tan(-\beta) = -u_z \tan{\beta} \tag{10}$$ 令一常數 $k=u_z$,則 $\vec u=k\,[\,\tan(\alpha) \ \hat i_c - \tan(\beta) \ \hat j_c + \hat k_c \,]$,可以發現其具有固定方向。 將 $\vec u$ 代入 $(8)$ 中可得其在 $R$ 下的位置向量矩陣為: \begin{equation} \vec u^{(r)}= k \, T_{c \rightarrow r} \begin{pmatrix} \tan{\alpha} \\ -\tan{\beta} \\ 1 \\ \end{pmatrix} + \vec r \tag{11} \end{equation}