3.9 旋转 回忆 3.4 节中讨论的内容,保长和保角是正交矩阵所表示的变换之特征。接下来我们将详细讨论那些描述旋转变换的正交矩阵。 图 3.14 某旋转变换让一个图形绕原点旋转,转角为正表示逆时针旋转。 一个 旋转(rotation) 是指一个将某个平面关于原点旋转角度 $\theta$ 的线性映射(具体而言,它是Euclid空间的自同构(automorphism)),也就是说旋转过程中不变的点原点。根据通常的约定,旋转角 $\theta > 0$ 表示逆时针旋转。如图 3.14 所示,其中的旋转矩阵如下: $$ \boldsymbol{R} = \begin{bmatrix} -0.38 & -0.92\\ 0.92 & -0.38 \end{bmatrix} \tag{3.
回忆 3.4 节中讨论的内容,保长和保角是正交矩阵所表示的变换之特征。接下来我们将详细讨论那些描述旋转变换的正交矩阵。
图 3.14 某旋转变换让一个图形绕原点旋转,转角为正表示逆时针旋转。
一个 旋转(rotation) 是指一个将某个平面关于原点旋转角度 \theta 的线性映射(具体而言,它是Euclid空间的自同构(automorphism)),也就是说旋转过程中不变的点原点。根据通常的约定,旋转角 \theta > 0 表示逆时针旋转。如图 3.14 所示,其中的旋转矩阵如下:
旋转在机器人学和计算机图形学等领域中有重要的应用。如在机器人学中(图 3.15),我们需要知道如何旋转机器人的各关节,使其可以抓取或放置某个物件。
图 3.15 机械臂的各关节需要正确旋转才能正确地抓取或放置物件 图片来源于 Deisenroth et al.. 2015
考虑 \mathbb{R}^{2} 中定义了笛卡尔坐标的标准基 \left\{ \boldsymbol{e}_{1} = \begin{bmatrix} 1\\0 \end{bmatrix}, \boldsymbol{e}_{2} = \begin{bmatrix} 0\\1 \end{bmatrix} \right\},我们想要像图 3.16 那样将其旋转某个角度 \theta。注意我们可以看出旋转后的两个向量依然是线性无关的,这说明它们还是 \mathbb{R}^{2} 的一个基——这说明旋转其实是一个基变换。
由于旋转操作 \Phi 是线性映射,我们也可以将其表示为一个 旋转矩阵(rotation matrix) \boldsymbol{R}(\theta)。我们可以通过三角函数得到旋转后向量(旋转 \Phi 的像(image))在原坐标系下的坐标,也就是
这样一来我们就得到了做上述基变换的旋转矩阵 \boldsymbol{R}(\theta):
图 3.16 将二维Euclid平面中的正交基旋转角度 θ
和 \mathbb{R}^{2} 不同的是,在 \mathbb{R}^{3} 中我们可以将其中的一个二维领面绕着一维的轴旋转。确定一个一般的旋转最简单的方法就是找到它是如何旋转标准基 \boldsymbol{e}_{1}, \boldsymbol{e}_{2}, \boldsymbol{e}_{3} ,并使旋转后的像 \boldsymbol{Re}_{1}, \boldsymbol{Re}_{2}, \boldsymbol{Re}_{3} 两两正交。这样我们可以将三个标准基经旋转后的像并起来得到最终的旋转矩阵 \boldsymbol{R}。
为了使得所谓“旋转角”在超过二维空间中的旋转具有实际意义,我们需要定义在此情况下什么叫做“逆时针旋转“。依照常识,一个关于某轴的”逆时针“(或平面)旋转是指我们从轴的正方向末端朝着原点方向看到的旋转。如图在 \mathbb{R}^{3} 中存在三个关于三个标准基向量的平面旋转:
图 3.17 将三维空间中的一个向量(灰色)绕着 e3 轴旋转了 θ 角度(蓝色)
直觉上,从二维、三维旋转到 n 维旋转的推广可被描述为将旋转限制在某个二维平面内,其他维度不变。如在前面例子中提到的三维空间中,我们可以旋转其中的二维平面。
定义 3.11 (Givens 旋转)
设 V 是 n 维 Euclid 空间,其上的自同构 \Phi : V \rightarrow V 若可表示为\boldsymbol{R}_{i,j}(\theta) := \begin{bmatrix} \boldsymbol{I}_{i-1} & & & & \\ & {\color{red}\cos \theta} & & {\color{red}-\sin \theta}\\ && \boldsymbol{I}_{i-j-1}\\ & {\color{red}-\sin \theta} && {\color{red}-\cos \theta} \\ &&&&\boldsymbol{I}_{n-j} \end{bmatrix} \in \mathbb{R}^{n \times n}, \tag{3.80}其中 1 \leqslant i < j \leqslant n,\theta \in \mathbb{R},空白处均为零,则 \boldsymbol{R}_{i,j}(\theta) 叫做 Givens 旋转。简单来说,它就是单位矩阵 \boldsymbol{I}_{n} 加上下面的条件:
r_{i,i} = \cos \theta,\quad r_{i,j} = -\sin \theta, \quad r_{j,i} = \sin \theta, \quad r_{j,j} = \cos \theta.\tag{3.81}若 n=2,我们就得到了二维的特殊情况,也即 (3.76)。
旋转算子有不少可由正交矩阵(定义 3.8)推导而来的有用性质:
译者注:此“乘法”可理解为作为旋转作为矩阵的乘法,也可以理解为旋转作为映射的复合。