坐标系约定

约定当前坐标系是标准正交的右手系(x^,y^,z^\hat{x}, \hat{y}, \hat{z} 为单位正交基),且两个坐标系的原点重合。设当前坐标系的三个基向量为 x^,y^,z^\hat{x}, \hat{y}, \hat{z},新坐标系的三个基向量为 r→,u→,f→\overrightarrow{r}, \overrightarrow{u}, \overrightarrow{f}。

则,对于当前坐标系而言,当然有:

x^=(100),y^=(010),z^=(001)\hat{x} = \begin{pmatrix} 1 \\ 0 \\ 0 \end{pmatrix}, \quad \hat{y} = \begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix}, \quad \hat{z} = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}

对新坐标系的唯一约束是:r→,u→,f→\overrightarrow{r}, \overrightarrow{u}, \overrightarrow{f} 线性无关(三者不共面),可以构成一组基底。

这里不要求它们是单位向量,也不要求两两垂直。

目标

找到一个矩阵 AA,使得对当前坐标系下的任意一点 p→=(a,b,c)T\overrightarrow{p} = (a, b, c)^{T} 满足:Ap→A\overrightarrow{p} 就是新坐标系下的 (a,b,c)T(a, b, c)^{T} 在当前坐标系下的坐标。

简言之,要找一个 AA,使得

Ap→=ar→+bu→+cf→A\overrightarrow{p} = a\overrightarrow{r} + b\overrightarrow{u} + c\overrightarrow{f}

矩阵 AA 的作用是:把"新坐标系下的坐标"翻译成"当前坐标系下的坐标"。

推导步骤

将 p→\overrightarrow{p} 拆分为沿 x^\hat{x}、y^\hat{y}、z^\hat{z} 三个方向的分量 aa、bb、cc:

p→=(abc)=(a00)+(0b0)+(00c)=ax^+by^+cz^\overrightarrow{p} = \begin{pmatrix} a \\ b \\ c \end{pmatrix} = \begin{pmatrix} a \\ 0 \\ 0 \end{pmatrix} + \begin{pmatrix} 0 \\ b \\ 0 \end{pmatrix} + \begin{pmatrix} 0 \\ 0 \\ c \end{pmatrix} = a\hat{x} + b\hat{y} + c\hat{z}

只考虑沿 x^\hat{x} 轴的分量,假设 3×33 \times 3 矩阵的第一列是 r→\overrightarrow{r}(即 r→\overrightarrow{r} 在当前坐标系下的坐标为 (xr,yr,zr)T(x_{r}, y_{r}, z_{r})^{T},其中 xrx_{r}、yry_{r}、zrz_{r} 是它的三个分量,都是标量),则有:

(xr??yr??zr??)(a00)=(xrayrazra)=ar→\begin{pmatrix} x_{r} & ? & ?\\ y_{r} & ? & ? \\ z_{r} & ? & ? \end{pmatrix} \begin{pmatrix} a \\ 0 \\ 0 \end{pmatrix} = \begin{pmatrix} x_{r} a \\ y_{r} a \\ z_{r} a \end{pmatrix} = a\overrightarrow{r}

后者与 r→\overrightarrow{r} 共线(a>0a > 0 时同向,a<0a < 0 时反向),长度是 ∣a∣⋅∥r→∥|a| \cdot \|\overrightarrow{r}\|。也就是说,这一步得到了 ar→a\overrightarrow{r} 在当前坐标系下的坐标。

注:这里并不是"投影"。把 ax^a\hat{x} 投影到 r→\overrightarrow{r} 方向上得到的是 ax^⋅r→∥r→∥2 r→\dfrac{a \hat{x} \cdot \overrightarrow{r}}{\|\overrightarrow{r}\|^{2}}\,\overrightarrow{r},一般并不等于 ar→a\overrightarrow{r};真正的"求坐标、求投影"是反方向的变换 A−1A^{-1} 在做的事。

类似地,如果矩阵的第二列、第三列分别是 u→\overrightarrow{u}、f→\overrightarrow{f},可以得到 bu→b\overrightarrow{u} 在当前坐标系下的坐标、cf→c\overrightarrow{f} 在当前坐标系下的坐标。

(xrxuxfyryuyfzrzuzf)(0b0)=(xubyubzub)=bu→\begin{pmatrix} x_{r} & x_{u} & x_{f} \\ y_{r} & y_{u} & y_{f} \\ z_{r} & z_{u} & z_{f} \end{pmatrix} \begin{pmatrix} 0 \\ b \\ 0 \end{pmatrix} = \begin{pmatrix} x_{u} b \\ y_{u} b \\ z_{u} b \end{pmatrix} = b\overrightarrow{u}

(xrxuxfyryuyfzrzuzf)(00c)=(xfcyfczfc)=cf→\begin{pmatrix} x_{r} & x_{u} & x_{f} \\ y_{r} & y_{u} & y_{f} \\ z_{r} & z_{u} & z_{f} \end{pmatrix} \begin{pmatrix} 0 \\ 0 \\ c \end{pmatrix} = \begin{pmatrix} x_{f} c \\ y_{f} c \\ z_{f} c \end{pmatrix} = c\overrightarrow{f}

矩阵乘法对向量是线性的,把三个分量加起来,就得到这个矩阵对 p→\overrightarrow{p} 的完整作用:

Ap→=(xrxuxfyryuyfzrzuzf)(abc)=ar→+bu→+cf→A\overrightarrow{p} = \begin{pmatrix} x_{r} & x_{u} & x_{f} \\ y_{r} & y_{u} & y_{f} \\ z_{r} & z_{u} & z_{f} \end{pmatrix}\begin{pmatrix} a \\ b \\ c \end{pmatrix} = a\overrightarrow{r} + b\overrightarrow{u} + c\overrightarrow{f}

其中 AA 的每一列既是新基向量在当前坐标系下的坐标,也是旧基向量在 AA 作用下的像:

Ax^=r→,Ay^=u→,Az^=f→A\hat{x} = \overrightarrow{r}, \qquad A\hat{y} = \overrightarrow{u}, \qquad A\hat{z} = \overrightarrow{f}

所以 AA 是把「新坐标系下的坐标」翻译成「当前坐标系下的坐标」的基变换矩阵(两个坐标系原点重合,因此它只有线性部分,不含平移)。

它是否退化成旋转矩阵取决于 r→,u→,f→\overrightarrow{r}, \overrightarrow{u}, \overrightarrow{f} 的性质:只有当新基是标准正交基、且新坐标系同为右手系时,AA 才是纯旋转。

注意事项

  1. AA 一般不是 正交矩阵。AA 的列就是 r→,u→,f→\overrightarrow{r}, \overrightarrow{u}, \overrightarrow{f},新基的性质直接表示在矩阵里:

    • 列的模长就是各轴的缩放因子,列与列不垂直就带来剪切
    • 只要三者不全为单位向量、或者不两两垂直,就有 ATA≠IA^{T}A \neq I、A−1≠ATA^{-1} \neq A^{T}
    • 若 r→,u→,f→\overrightarrow{r}, \overrightarrow{u}, \overrightarrow{f} 两两正交但长度不为 1,可按 A=RSA = R S 拆开,其中 S=diag(∥r→∥,∥u→∥,∥f→∥)S = \mathrm{diag}(\|\overrightarrow{r}\|, \|\overrightarrow{u}\|, \|\overrightarrow{f}\|) 是各轴的缩放、RR 是把三列单位化后得到的旋转矩阵,于是 A−1=S−1RTA^{-1} = S^{-1}R^{T};
    • 若三者连正交都不满足(含剪切),则要用极分解 A=RUA = RU
  2. AA 是 正交矩阵 的充要条件是 r→,u→,f→\overrightarrow{r}, \overrightarrow{u}, \overrightarrow{f} 两两正交且都是单位向量(即标准正交基)。

  3. 若还要求 AA 是纯旋转(不叠加镜像),需要 det⁡A=r→⋅(u→×f→)=+1\det A = \overrightarrow{r} \cdot (\overrightarrow{u} \times \overrightarrow{f}) = +1,即新坐标系同样是右手系

    • det⁡A=−1\det A = -1 则是旋转叠加一次镜像
    • ∣det⁡A∣|\det A| 等于 r→\overrightarrow{r}、u→\overrightarrow{u}、f→\overrightarrow{f} 张成的平行六面体体积