罗德里格旋转公式 绕轴旋转矩阵

             

预备知识 三维旋转矩阵,圆周运动的速度,几何矢量的内积,矢量叉乘

  1三维空间中,某点 $ \boldsymbol{\mathbf{r}} =(x,y,z) ^{\mathrm{T}} $ 以单位矢量 $ \hat{\boldsymbol{\mathbf{A}}} =(A_x, A_y, A_z) ^{\mathrm{T}} $ 为轴按右手定则转动 $\theta$ 角的得到的点 $ \boldsymbol{\mathbf{r}} '=(x',y',z') ^{\mathrm{T}} $ 可用罗德里格斯旋转公式(Rodrigues' rotation formula)计算:

\begin{equation} \boldsymbol{\mathbf{r}} ' = \boldsymbol{\mathbf{r}} \cos\theta + \hat{\boldsymbol{\mathbf{A}}} \boldsymbol\times \boldsymbol{\mathbf{r}} \sin\theta + \hat{\boldsymbol{\mathbf{A}}} ( \hat{\boldsymbol{\mathbf{A}}} \boldsymbol\cdot \boldsymbol{\mathbf{r}} ) (1 - \cos\theta) \end{equation}
令该旋转的三维旋转矩阵 $ \boldsymbol{\mathbf{R}} _\theta$,则
\begin{equation} \boldsymbol{\mathbf{r}} ' = \boldsymbol{\mathbf{R}} _\theta \boldsymbol{\mathbf{r}} \end{equation}
式 1 可得
\begin{equation} \boldsymbol{\mathbf{R}} _\theta = \begin{pmatrix} a A_x^2 + c & a A_x A_y - s A_z & a A_x A_z + s A_y\\ a A_y A_x + s A_z & a A_y^2 + c & a A_y A_z - s A_x\\ a A_z A_x - s A_y & a A_z A_y + s A_x & a A_z^2 + c \end{pmatrix}\end{equation}
其中
\begin{equation} c = \cos\theta \qquad s = \sin\theta \qquad a = 1 - \cos\theta \end{equation}
另外也可以用四元数表示该矩阵.

1. 推导

   推导的思路是用 $ \hat{\boldsymbol{\mathbf{A}}} $ , $ \boldsymbol{\mathbf{r}} $ 和 $\theta $ 三个已知量经过数乘,内积和叉乘三种运算,表示出旋转后的矢量 $ \boldsymbol{\mathbf{r}} '$,再拆成三个分量,即可得到线性变换,进而写出矩阵.注意该思路与推导平面旋转矩阵 的思路不一样.

图
图 1:绕轴旋转矩阵的推导

   如图,$ \boldsymbol{\mathbf{r}} $ 绕单位矢量 $ \hat{\boldsymbol{\mathbf{A}}} $ 旋转 $\theta$ 角后得到 $ \boldsymbol{\mathbf{r}} '$. $ \boldsymbol{\mathbf{r}} $ 在 $ \hat{\boldsymbol{\mathbf{A}}} $ 方向投影得到的矢量为

\begin{equation} \boldsymbol{\mathbf{r}} _3 = ( \hat{\boldsymbol{\mathbf{A}}} \boldsymbol\cdot \boldsymbol{\mathbf{r}} ) \hat{\boldsymbol{\mathbf{A}}} \end{equation}
在与 $ \hat{\boldsymbol{\mathbf{A}}} $ 垂直方向的分量为
\begin{equation} \boldsymbol{\mathbf{r}} _1 = \boldsymbol{\mathbf{r}} - \boldsymbol{\mathbf{r}} _3 \end{equation}
为了构成一组正交基底,令
\begin{equation} \boldsymbol{\mathbf{r}} _2 = \hat{\boldsymbol{\mathbf{A}}} \boldsymbol\times \boldsymbol{\mathbf{r}} _1 \end{equation}
则 $ \boldsymbol{\mathbf{r}} _2$ 相当于 $ \boldsymbol{\mathbf{r}} _1$ 绕 $ \hat{\boldsymbol{\mathbf{A}}} $ 旋转 $90^\circ$.现在有了正交的 $ \boldsymbol{\mathbf{r}} _1$ , $ \boldsymbol{\mathbf{r}} _2$ 就可以表示出 $ \boldsymbol{\mathbf{r}} _1$ 绕 $ \hat{\boldsymbol{\mathbf{A}}} $ 旋转 $\theta$ 角后的结果
\begin{equation} \boldsymbol{\mathbf{r}} ' - \boldsymbol{\mathbf{r}} _3 = \boldsymbol{\mathbf{r}} _1\cos \theta + \boldsymbol{\mathbf{r}} _2\sin \theta \end{equation}
\begin{equation} \boldsymbol{\mathbf{r}} ' = \boldsymbol{\mathbf{r}} _1\cos \theta + \boldsymbol{\mathbf{r}} _2\sin \theta + \boldsymbol{\mathbf{r}} _3 \end{equation}
式 5 式 6 式 7 代入式 9 ,即可求出式 1 .把结果写成分量的形式,化简可得到式 2

2. 由旋转矩阵推导出匀速圆周运动的线速度

   我们可以用旋转矩阵得到 $ \boldsymbol{\mathbf{v}} = \boldsymbol{\mathbf{\omega}} \boldsymbol\times \boldsymbol{\mathbf{r}} $(式 5 ),这也验证了旋转矩阵的正确性.

   在无穷小的时间 $t$ 内,点 $P$ 绕轴转过 $\theta $ 角,则 $\theta = \omega t \to 0$,此时有 $\sin\theta \to \theta $ 和 $\cos\theta \to 1$.旋转矩阵变为

\begin{equation} \boldsymbol{\mathbf{R}} _\theta = \begin{pmatrix} 1 & -A_z\theta & A_y \theta\\ A_z \theta & 1 & -A_x \theta\\ -A_y \theta & A_x \theta &1 \end{pmatrix} \end{equation}
下面 $ \boldsymbol{\mathbf{R}} _\theta$ 乘以某点的列矢量,得到变换后的坐标,再减掉变换前的坐标,得位移矢量 $ \boldsymbol{\mathbf{s}} $
\begin{equation} \begin{aligned} \boldsymbol{\mathbf{s}} &= \boldsymbol{\mathbf{v}} t\\ &= \begin{pmatrix}1 & -A_z\theta & A_y\theta\\A_z\theta & 1 & -A_x\theta\\-A_y\theta & A_x\theta & 1\end{pmatrix} \begin{pmatrix}x\\y\\z\end{pmatrix} - \begin{pmatrix}1&&\\&1&\\&&1\end{pmatrix} \begin{pmatrix}x\\y\\z\end{pmatrix} \\ &= \theta \begin{pmatrix}0 & -A_z & A_y\\A_z & 0 & -A_x\\-A_y & A_x & 0\end{pmatrix} \begin{pmatrix}x\\y\\z\end{pmatrix} \\ &= \theta \hat{\boldsymbol{\mathbf{A}}} \boldsymbol\times \boldsymbol{\mathbf{r}} = \left( \boldsymbol{\mathbf{\omega}} t \right) \boldsymbol\times \boldsymbol{\mathbf{r}} \end{aligned} \end{equation}
两边除以 $t$,得 $ \boldsymbol{\mathbf{v}} = \boldsymbol{\mathbf{\omega}} \boldsymbol\times \boldsymbol{\mathbf{r}} $.


1. ^ 参考 Wikipedia 相关页面

致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择会员制,大量广告,内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 10 元,我们一个星期内就能脱离亏损, 并保证网站能在接下来的一整年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

广告位

投放详情

         

© 小时科技 保留一切权利