- 本词条需要更多讲解,便于帮助理解.
- 本词条存在未完成的内容.
Prerequisite 绕轴旋转矩阵
,旋转矩阵的导数
,四元数
四元数可以用来简洁地表示三维空间中的旋转,极大地减少了计算量.
三维空间中的一个向量表示为标部为 $0$ 的四元数:$v= \begin{pmatrix}0, \boldsymbol{\mathbf{v}} \end{pmatrix} $.如果我们绕着一个单位向量 $\hat{ \boldsymbol{\mathbf{n}} }$ 把 $ \boldsymbol{\mathbf{v}} $ 旋转一个角度 $\theta$,所得的结果应该是哪个向量呢?取四元数 $q= \begin{pmatrix}\cos{\frac{\theta}{2}}, \hat{ \boldsymbol{\mathbf{n}} }\sin{\frac{\theta}{2}}\end{pmatrix} $,那么旋转后的向量就可以表示为
\begin{equation}
qvq^{-1}
\end{equation}
比如说,取 $v=(0, 1, 0, 0)$,它代表一个 $x$ 轴上的单位向量.如果想要把它绕着 $z$ 轴上的单位向量转 $\pi/2$,那么结果向量的四元数表示应该是 $(0, 0, 1, 0)$.按照我们定义的规则,旋转表示为四元数 $q=(\sqrt{2}/2, 0, 0, \sqrt{2}/2)$,按照四元数的乘法规则易得 $qvq^{-1}=(0,0,1,0)$.
证明
取四元数 $q= \begin{pmatrix}\cos{\frac{\theta}{2}}, \hat{ \boldsymbol{\mathbf{n}} }\sin{\frac{\theta}{2}}\end{pmatrix} $ 和 $v=(0, \boldsymbol{\mathbf{v}} )$,直接计算得:
\begin{equation}
\begin{aligned}
qvq^{-1}&= \begin{pmatrix}\cos{\frac{\theta}{2}}, \hat{ \boldsymbol{\mathbf{n}} }\sin{\frac{\theta}{2}}\end{pmatrix} \cdot (0, \boldsymbol{\mathbf{v}} )\cdot q^{-1}\\&
=(- \boldsymbol{\mathbf{v}} \cdot\hat{ \boldsymbol{\mathbf{n}} }\sin{\frac{\theta}{2}}, \boldsymbol{\mathbf{v}} \cos{\frac{\theta}{2}}+\hat{ \boldsymbol{\mathbf{n}} }\times \boldsymbol{\mathbf{v}} \sin{\frac{\theta}{2}})\cdot (\cos{\frac{\theta}{2}}, -\hat{ \boldsymbol{\mathbf{n}} }\sin{\frac{\theta}{2}})\\&
=(0, \cos^2\frac{\theta}{2} \boldsymbol{\mathbf{v}} +\cos\frac{\theta}{2}\sin\frac{\theta}{2}\hat{ \boldsymbol{\mathbf{n}} }\times \boldsymbol{\mathbf{v}} +(\hat{ \boldsymbol{\mathbf{n}} }\cdot \boldsymbol{\mathbf{v}} )\sin^2\frac{\theta}{2}\hat{ \boldsymbol{\mathbf{n}} }\\&+\cos\frac{\theta}{2}\sin\frac{\theta}{2}\hat{ \boldsymbol{\mathbf{n}} }\times \boldsymbol{\mathbf{v}} -\sin^2\frac{\theta}{2}\hat{ \boldsymbol{\mathbf{n}} }\times(\hat{ \boldsymbol{\mathbf{n}} }\times \boldsymbol{\mathbf{v}} ))\\&
=(0, \cos^2\frac{\theta}{2} \boldsymbol{\mathbf{v}} -\sin^2\frac{\theta}{2}\hat{ \boldsymbol{\mathbf{n}} }\times(\hat{ \boldsymbol{\mathbf{n}} }\times \boldsymbol{\mathbf{v}} )+\sin\theta\hat{ \boldsymbol{\mathbf{n}} }\times \boldsymbol{\mathbf{v}} \\&+(\hat{ \boldsymbol{\mathbf{n}} }\cdot \boldsymbol{\mathbf{v}} )\sin^2\frac{\theta}{2}\hat{ \boldsymbol{\mathbf{n}} })
\end{aligned}
\end{equation}
如果取 $ \boldsymbol{\mathbf{v}} \perp\hat{ \boldsymbol{\mathbf{n}} }$,考虑到此时 $\hat{ \boldsymbol{\mathbf{n}} }\times(\hat{ \boldsymbol{\mathbf{n}} }\times \boldsymbol{\mathbf{v}} )=- \boldsymbol{\mathbf{v}} $ 且 $\hat{ \boldsymbol{\mathbf{n}} }\cdot \boldsymbol{\mathbf{v}} =0$,那么上式可以化简为
\begin{equation}
\begin{aligned}
qvq^{-1}&=(0, \cos\theta \boldsymbol{\mathbf{v}} +\sin\theta\hat{ \boldsymbol{\mathbf{n}} }\times \boldsymbol{\mathbf{v}} )
\end{aligned}
\end{equation}
这正是 $ \boldsymbol{\mathbf{v}} $ 绕 $\hat{ \boldsymbol{\mathbf{n}} }$ 旋转 $\theta$ 的结果.
如果取 $ \boldsymbol{\mathbf{v}} \parallel\hat{ \boldsymbol{\mathbf{n}} }$,考虑到此时 $\hat{ \boldsymbol{\mathbf{n}} }\times \boldsymbol{\mathbf{v}} =0$ 且 $(\hat{ \boldsymbol{\mathbf{n}} }\cdot \boldsymbol{\mathbf{v}} ) \boldsymbol{\mathbf{v}} = \boldsymbol{\mathbf{v}} $,那么上式化为
\begin{equation}
\begin{aligned}
qvq^{-1}&=(0, \cos^2\frac{\theta}{2} \boldsymbol{\mathbf{v}} +\sin^2\frac{\theta}{2} \boldsymbol{\mathbf{v}} )=(0, \boldsymbol{\mathbf{v}} )=v
\end{aligned}
\end{equation}
这也是 $ \boldsymbol{\mathbf{v}} $ 绕 $\hat{ \boldsymbol{\mathbf{n}} }$ 旋转 $\theta$ 的结果.
综上所述,取任意向量 $ \boldsymbol{\mathbf{v}} $,把它分为垂直和平行于旋转轴的 $ \boldsymbol{\mathbf{v}} _\perp$ 和 $ \boldsymbol{\mathbf{v}} _\parallel$,分别对应四元数 $v_\perp$ 和 $v_\parallel$,那么 $q v_\perp q^{-1}$ 和 $q v_\parallel q^{-1}$ 分别对应这两个向量旋转后的结果.故取 $v=v_\perp+v_\parallel$ 为 $ \boldsymbol{\mathbf{v}} $ 对应的四元数后可由四元数乘法分配律得到,$qvq^{-1}$ 对应 $ \boldsymbol{\mathbf{v}} $ 旋转后的向量.
一点补充:考虑到四元数限定向量方向时退化为复数(见四元数的讨论),故 $ \boldsymbol{\mathbf{v}} \parallel\hat{ \boldsymbol{\mathbf{n}} }$ 的情况其实可以直接套用复数的交换性来得到,即 $qvq^{-1}=qq^{-1}v=v$.
旋转矩阵
我们可以用四元数(quaternions) $ \boldsymbol{\mathbf{q}} = [s, \boldsymbol{\mathbf{v}} ]$ 来表示绕轴旋转矩阵,其中
\begin{equation}
s = \cos\left(\frac{\theta}{2}\right) \qquad v = \left\lvert \boldsymbol{\mathbf{v}} \right\rvert = \sin\left(\frac{\theta}{2}\right) \hat{\boldsymbol{\mathbf{A}}}
\end{equation}
则绕轴旋转矩阵
可以表示为
\begin{equation}
\boldsymbol{\mathbf{R}} (\theta) =
\begin{pmatrix}
1 - 2v_y^2 - 2v_z^2 & 2v_xv_y - 2sv_z & 2v_x v_z + 2s v_y\\
2v_x v_y + 2sv_z & 1 - 2v_x^2 - 2v_z^2 & 2v_y v_z - 2s v_x\\
2v_x v_z - 2s v_y & 2v_y v_z + 2s v_x & 1 - 2v_x^2 - 2v_y^2
\end{pmatrix}
\end{equation}
四元数的乘法运算可以表示两个旋转矩阵相乘,即把两次旋转合并为一次旋转
\begin{equation}
[s_1, \boldsymbol{\mathbf{v}} _1] [s_2, \boldsymbol{\mathbf{v}} _2] = [s_1 s_2 - \boldsymbol{\mathbf{v}} _1 \boldsymbol\cdot \boldsymbol{\mathbf{v}} _2, s_1 \boldsymbol{\mathbf{v}} _2 + s_2 \boldsymbol{\mathbf{v}} _1 + \boldsymbol{\mathbf{v}} _1 \boldsymbol\times \boldsymbol{\mathbf{v}} _2]
\end{equation}
导数
若从坐标系 B 到坐标系 A 的基底变换矩阵为 $ \boldsymbol{\mathbf{R}} $,当 B 绕原点以角速度 $ \boldsymbol{\mathbf{\omega}} $ 旋转时有(eq. 1 )
\begin{equation}
\frac{\mathrm{d}{ \boldsymbol{\mathbf{R}} }}{\mathrm{d}{t}} = \boldsymbol{\mathbf{\Omega}} \boldsymbol{\mathbf{R}}
\end{equation}
其中 $ \boldsymbol{\mathbf{\Omega}} $ 乘以任意位置矢量 $ \boldsymbol{\mathbf{r}} $ 等于 $ \boldsymbol{\mathbf{\omega}} \boldsymbol\times \boldsymbol{\mathbf{r}} $
\begin{equation}
\boldsymbol{\mathbf{\Omega}} = \begin{pmatrix}
0 & -\omega_z & \omega_y\\
\omega_z & 0 & -\omega_x\\
-\omega_y & \omega_x & 0
\end{pmatrix} \end{equation}
若旋转矩阵 $ \boldsymbol{\mathbf{R}} $ 对应的四元数为 $ \boldsymbol{\mathbf{q}} $,则
\begin{equation}
\dot { \boldsymbol{\mathbf{q}} }(t) = \frac12 [0, \boldsymbol{\mathbf{\omega}} (t)] \boldsymbol{\mathbf{q}} (t)
\end{equation}