本节简单介绍用矩阵来描述旋转。在二维平面上,复数无疑是描述旋转的最佳工具;然而推广到三维空间中,却要动用到“四元数”了。为了证明四元数的相关结论,我们需要三维旋转的矩阵描述。最一般的旋转运动为:绕某一根轴旋转$\theta$角度。这样我们就需要三个参数来描述它:确定一根轴至少需要两个参数,确定角度需要一个参数。因此,如果要用“数”来描述三维空间的伸缩和旋转的话,“三元数”显然是不够的,完成这一目的至少需要四元数。这也从另外一个角度反映了三元数的不存在性。

矩阵方法
首先我们认识到,如果旋转轴是坐标轴之一,那么旋转矩阵将是最简单的,比如向量$\mathbf{x}=(x_0,y_0,z_0)^{T}$绕$z$轴逆时针旋转$\theta$角后的坐标就可以描述为
$$\begin{equation}
\mathbf{R}_{\theta}\mathbf{x}\end{equation}$$
其中
$$\begin{equation}\label{xuanzhuanjuzhen}
\mathbf{R}_{\theta}=\left[ \begin{array}{*{20}{c}}
\cos\theta&{ - \sin\theta}&0\\
\sin\theta & \cos\theta &0\\
0&0&1
\end{array} \right]
\end{equation}$$
如果旋转轴不是坐标轴,而是由单位列向量$\mathbf{u}=(x_1,y_1,z_1)$确定,那么同时就确定了与$\mathbf{u}$垂直的一个平面,在此平面上找到两个正交的单位列向量$\mathbf{e}_1,\mathbf{e}_2$,用$\mathbf{e}_1,\mathbf{e}_2,\mathbf{u}$就可以建立一个新直角坐标系(右手架),设在此坐标系之下原来的$\mathbf{x}$向量的坐标为$\mathbf{\xi}=(\xi_1,\xi_2,\xi_3)^T$,则
$$\begin{equation}
\left[ \mathbf{e}_1,\mathbf{e}_2,\mathbf{u} \right] \mathbf{\xi}=\mathbf{x}
\end{equation}$$
在新坐标系下描述旋转是方便的,它就是矩阵$\eqref{xuanzhuanjuzhen}$。绕$\mathbf{u}$轴逆时针旋转$\theta$角后,坐标为
$$\begin{equation}
\mathbf{R}_{\theta} \mathbf{\xi}=\mathbf{R}_{\theta}\left[ \mathbf{e}_1,\mathbf{e}_2,\mathbf{u} \right]^{-1}\mathbf{x}
\end{equation}$$
上面是在$\mathbf{e}_1,\mathbf{e}_2,\mathbf{u}$坐标系的坐标,变为我们最初的直角坐标系,那就是
$$\begin{equation}\label{xuanzhuan}
\left[ \mathbf{e}_1,\mathbf{e}_2,\mathbf{u} \right]\mathbf{R}_{\theta}\left[ \mathbf{e}_1,\mathbf{e}_2,\mathbf{u} \right]^{-1}\mathbf{x}
\end{equation}$$
$\eqref{xuanzhuan}$式就是旋转之后的坐标。它描述了三维空间中最一般的旋转。注意矩阵$\left[ \mathbf{e}_1,\mathbf{e}_2,\mathbf{u} \right]$ 是一个正交矩阵,因此它的逆就是$\left[ \mathbf{e}_1,\mathbf{e}_2,\mathbf{u} \right]^{-1}=\left[ \begin{array}{*{20}{c}}\mathbf{e}_1^T \\ \mathbf{e}_2^T \\ \mathbf{u}^{T}\end{array} \right]$,因此旋转后坐标为
$$\begin{equation}\label{xuanzhuanzuobiao3}
\left[ \mathbf{e}_1,\mathbf{e}_2,\mathbf{u} \right]\mathbf{R}_{\theta}\left[ \begin{array}{*{20}{c}}\mathbf{e}_1^T \\ \mathbf{e}_2^T \\ \mathbf{u}\end{array}\right]\mathbf{x} =\left[ \mathbf{e}_1,\mathbf{e}_2,\mathbf{u} \right]\mathbf{R}_{\theta}\left[ \begin{array}{*{20}{c}}\mathbf{e}_1 \cdot \mathbf{x} \\ \mathbf{e}_2 \cdot \mathbf{x}\\ \mathbf{u} \cdot \mathbf{x}\end{array} \right]
\end{equation}$$

剩下就是$\mathbf{e}_1,\mathbf{e_2}$的确定问题。如果无法很快找出满足条件的两个向量来,那么可以利用向量的叉积:
$$\begin{equation}\label{chaji}
\mathbf{e}_1=\frac{\mathbf{u}\times\mathbf{x}}{|\mathbf{u}\times\mathbf{x}|},\mathbf{e}_2=\frac{\mathbf{u}\times(\mathbf{u}\times\mathbf{x})}{|\mathbf{u}\times(\mathbf{u}\times\mathbf{x})|}=\frac{(\mathbf{u}\cdot\mathbf{x})\mathbf{u}- \mathbf{x}}{|\mathbf{u}\times\mathbf{x}|}
\end{equation}$$

叉积的好处是明显的,将$\eqref{chaji}$代入$\eqref{xuanzhuanzuobiao3}$,得到
$$\begin{equation}\label{juzhenxuanzhuanhuajian}
\begin{aligned}
&\left[ \frac{\mathbf{u}\times\mathbf{x}}{|\mathbf{u}\times\mathbf{x}|},\frac{(\mathbf{u}\cdot\mathbf{x})\mathbf{u}- \mathbf{x}}{|\mathbf{u}\times\mathbf{x}|},\mathbf{u} \right]\mathbf{R}_{\theta}\left[ \begin{array}{*{20}{c}}0 \\ \frac{(\mathbf{u} \cdot \mathbf{x})^2-\mathbf{x}^2}{|\mathbf{u}\times\mathbf{x}|}\\ \mathbf{u} \cdot \mathbf{x}\end{array} \right]\\
=&\left[ \frac{\mathbf{u}\times\mathbf{x}}{|\mathbf{u}\times\mathbf{x}|},\frac{(\mathbf{u}\cdot\mathbf{x})\mathbf{u}- \mathbf{x}}{|\mathbf{u}\times\mathbf{x}|},\mathbf{u} \right]\left[ \begin{array}{*{20}{c}} |\mathbf{u}\times \mathbf{x}| \sin\theta \\ -|\mathbf{u}\times \mathbf{x}|\cos\theta \\ \mathbf{u} \cdot \mathbf{x}\end{array} \right]\\
=&\left(\mathbf{u}\times\mathbf{x} \right)\sin\theta-\left[(\mathbf{u}\cdot\mathbf{x})\mathbf{u}- \mathbf{x}\right]\cos\theta+(\mathbf{u}\cdot\mathbf{x})\mathbf{u}\\
=&\left(\mathbf{u}\times\mathbf{x} \right)\sin\theta+\left[(\mathbf{u}\times\mathbf{x})\times\mathbf{u}\right]\cos\theta+(\mathbf{u}\cdot\mathbf{x})\mathbf{u}
\end{aligned}
\end{equation}$$
这被称为Rodrigues旋转公式,它是用向量描述三维空间旋转最简单的形式。写成最后的形式是因为它有明显的几何意义,事实上可以完全不用矩阵的分析,只是利用几何方法和向量叉积就可以推导出$\eqref{juzhenxuanzhuanhuajian}$的最后一式来。另外如果$\mathbf{x} \perp \mathbf{u}$(事实上在实际应用中,这一条件并不算苛刻。),那么坐标旋转公式将会相当简单:
$$\begin{equation}
(\mathbf{u}\times\mathbf{x})\sin\theta +\mathbf{x}\cos\theta
\end{equation}$$

几何方法

旋转示意图.png

已知单位向量$\mathbf{u}$是旋转轴,求向量$\mathbf{x}$绕轴$\mathbf{u}$逆时针旋转$\theta$角之后的坐标。我们用$\mathbf{u}$跟$\mathbf{x}$作叉积$\mathbf{e}_1=\mathbf{u}\times\mathbf{x}$,得到一个与$\mathbf{u}$和$\mathbf{x}$都垂直的向量;再做叉积$\mathbf{e}_2=(\mathbf{u}\times\mathbf{x})\times\mathbf{u}$,得到一个与$\mathbf{u}$和$\mathbf{x}$和$\mathbf{u}$共面的向量,且这个向量与$\mathbf{u}\times\mathbf{x}$等长,与$\mathbf{u}$和$\mathbf{u}\times\mathbf{x}$都垂直。

注意到
$$(\mathbf{u}\times\mathbf{x})\times\mathbf{u}=\mathbf{x}-(\mathbf{u}\cdot\mathbf{x})\mathbf{u}$$
也就是说向量$\mathbf{x}$在平面$\mathbf{e}_1 ,\mathbf{e}_2$上的投影就是$\mathbf{e}_2$,而在$\mathbf{u}$轴上的投影是$(\mathbf{u}\cdot\mathbf{x})\mathbf{u}$,要注意旋转的时候只有在$\mathbf{e}_1 ,\mathbf{e}_2$平面、也就是旋转平面上的分量有变化,描述旋转平面上的变换是简单的,它只不过是
$$\mathbf{e}_2 \cos\theta +\mathbf{e}_1\sin\theta$$

再加上$\mathbf{u}$轴的分量$(\mathbf{u}\cdot\mathbf{x})\mathbf{u}$就得到了旋转后的坐标,也就是
$$\left(\mathbf{u}\times\mathbf{x} \right)\sin\theta+\left[(\mathbf{u}\times\mathbf{x})\times\mathbf{u}\right]\cos\theta+(\mathbf{u}\cdot\mathbf{x})\mathbf{u}$$
这样我们就重新得到了$\eqref{juzhenxuanzhuanhuajian}$。


转载到请包括本文地址:http://spaces.ac.cn/archives/2224/

如果您觉得本文还不错,欢迎点击下面的按钮对博主进行打赏。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!