平面等距变换、三维空间的旋转和四元数

之前寒假从Artin的Algebra上看到了一些有意思的东西,主要是关于对称和旋转这样的变换的。本来很早就想写了但是拖到现在,还有一部分内容是关于平面无限密铺的,估计这学期要被两门分析支配了就以后再说了。有兴趣可以自行阅读Artin的书。

首先可以考虑一个这样的问题,将平面上一点绕着某点P旋转\theta角后再绕Q旋转\varphi角,最终得到的变换是什么?能否表示成为绕另外某个点R旋转某个特定角度的形式?

直接从几何上考虑这个问题似乎比较困难,通过分析平面上的等距变换(即由旋转、平移和对称组成的变换)的结构,可以让我们从代数角度对这样的变换进行化简,将几何问题转化为解线性方程组的问题。

另外,三维空间中的旋转可以通过旋转矩阵来进行描述,但是旋转矩阵的结构较为复杂。我们通过分析旋转的特性,以及二维的酉矩阵P \in SU_2的性质,推导了四元数表示旋转的方法。如果对四元数感兴趣可以直接跳到对应部分,这篇对四元数的介绍的风格可能比较奇特。

对于文中的部分内容,需要基本的线性代数的知识,特别是需要知道特征值等方面的知识。对于证明直接略过是并不影响阅读的。同时,平面等距变换和三维空间中的旋转是两个相对独立的部分,可以分别阅读。

平面上的等距变换

首先,我们来定义一下什么叫做等距变换(isometry)。 \newcommand{\RR}{\mathbb R^2}
\newcommand{\Rn}{\mathbb R^n}
\newcommand{\R}{\mathbb R}
\newcommand{\tr}{\text{tr}}
\newcommand{\bi}{\textbf{i}}
\newcommand{\bj}{\textbf{j}}
\newcommand{\bk}{\textbf{k}}

定义1. 设f: \Rn \to \Rn的一个映射。若对任意x, y\in \Rn,满足|x - y| = |f(x) - f(y)|,则称f为一个等距变换。\Box

特别地,在一个平面上,一个等距变换将会保持两个点之间的距离不变,类似刚体的运动(旋转、平移),但是还有一个,镜面对称也满足这条性质。

现在我们知道旋转(绕任意点)、平移以及镜面对称(沿任意直线)都是一个等距变换。自然地,我们想要知道是否还有其它不属于这三类,或者不能够通过这三类变换组合而成的平面等距变换。

等距变换的特点

首先,我们来研究一下等距变换的特点,我们会发现,若一个等距变换保持原点不动,那么它是一个正交线性变换。换句话说,这样的变换可以通过一个正交矩阵来描述,在平面的情况下,它由绕原点的旋转以及一个可能的镜面对称组成。

定理1. 设f: \Rn \to \Rn,若f是一个等距变换,且f(0) = 0。那么f是一个正交线性变换(即对任意a, b \in \R以及x, y \in \Rn,有f(ax+by) = af(x) + bf(y)。同时还有\langle f(x), f(y)\rangle = \langle x, y \rangle,这里\langle \cdot, \cdot \rangle是标准的\Rn上的内积)。\Box

证明. 首先,我们证明f是保持\Rn上的内积不变的,即\langle f(x), f(y) \rangle = \langle x, y \rangle

由于f(0) = 0,我们有|f(x)| = |x|。于是

\begin{equation*} \begin{aligned} & |f(x) - f(y)|^2 = |x - y|^2 \\ \Rightarrow& |f(x)|^2 + |f(y)|^2 - 2\langle f(x), f(y) \rangle = |x|^2 + |y|^2 - 2\langle x, y \rangle\\ \Rightarrow& \langle f(x), f(y) \rangle = \langle x, y \rangle \end{aligned} \end{equation*}

接下来我们验证线性性:

\begin{equation*} \begin{aligned} & |f(cx) - cf(x)|^2 \\ =& |f(cx)|^2 + |cf(x)|^2 - 2c\langle f(cx), f(x) \rangle \\ =& |cx|^2 + |cx|^2 - 2c\langle cx, x \rangle = 0 \end{aligned} \end{equation*}

因此有f(cx) = cf(x),类似可以验证f(x + y) = f(x) + f(y)\Box

现在来考虑f(0) = a的一般情况,我们定义g(x) = f(x) - a,这样g仍然是一个等距变换并且就满足上述定理的条件,那么g是一个正交变换。

至此,我们已经完全了解平面等距变换的组成,它的确是由平移、(绕原点)旋转以及(沿x轴)镜面对称组合而成的。

旋转、平移以及对称的描述

我们先来研究一下等距变换的这三个基本构成,

  1. 平移t_a

    
t_a(x) = t_a(x) = x + a = \begin{bmatrix} x_1\\ x_2\end{bmatrix}+\begin{bmatrix} a_1\\ a_2\end{bmatrix}

  2. (绕原点逆时针)旋转\rho_\theta

    
\rho_\theta(x) = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}\begin{bmatrix} x_1\\ x_2\end{bmatrix}

  3. (按照x轴)对称r

    
r(x) = \begin{bmatrix} 1&0\\ 0&-1\end{bmatrix}\begin{bmatrix} x_1\\ x_2\end{bmatrix} = \begin{bmatrix} x_1 \\ -x_2 \end{bmatrix}

我们知道,任意一个平面等距变换都可以表示成为这三种基本变换的组合,

定理2. 设f: \RR \to \RR是一个平面等距变换,那么f = r\rho_\theta t_af = \rho_\theta t_a\Box

在继续之前,我们先来探讨一下这三种基本变换的运算,这些都可以通过矩阵的形式进行验证,


\begin{aligned}
\rho_{\theta+\varphi} &= \rho_\theta\rho_\varphi = \rho_\varphi\rho_\theta \\
r\rho_\theta &= \rho_{-\theta}r \\
\rho_\theta t_a &= t_{\rho_\theta(a)} \rho_\theta
\end{aligned}

值得注意的是最后一个式子,这是利用\rho_\theta的线性得出的:\rho_\theta t_a(x) = \rho_\theta(x + a) = \rho_\theta(x) + \rho_\theta(a)

接下来看一个绕特定点旋转的例子:绕点a逆时针旋转\theta角。这样的变换我们可以先平移-a,再绕原点逆时针旋转\theta角,再平移a,也就是可以写成t_a \rho_\theta t_{-a}。然后根据上述运算法则,我们可以得到它等价于t_b \rho_\theta,其中b = a - \rho_\theta(a)

有了这样的运算法则,我们就可以从代数上对某些复杂的等距变换进行化简,而这样的化简在几何上不是非常直观而且容易出错。例如,某个等距变换的效果是:先绕点a逆时针旋转\theta角,再绕点b逆时针旋转\varphi角。那么在代数上写出来就是:f = t_b\rho_\varphi t_{-b} t_a\rho_\theta t_{-a}。化简后可以得到f = t_c \rho_{\theta+\varphi},其中c = b + \rho_\varphi(a) - \rho_\varphi(b) - \rho_{\varphi+\theta}(a)

接下来分析一下,上述变换f = t_c \rho_{\theta + \varphi}是否能够表示为绕某个特定点旋转的形式。为此,我们只需要知道 t_c \rho_{\theta + \varphi} = t_p \rho_\omega t_{-p} 是否有解即可。右侧可以化简为标准形式 t_p\rho_\omega t_{-p} = t_{q} \rho_\omega,其中q = p - \rho_\omega(p)

显然\omega = \varphi + \theta,现在只要考虑c = q = p - \rho_\omega(p)是否有解。计算其行列式

 \det(\text{id} - \rho_\omega) = 2 - 2\cos\omega

那么,只要\omega \neq 0,这个方程就对任意c都存在解。特别地,如果\omega = 0,那么\varphi = -\theta,这个变换将会变为平移。

三维空间中的旋转

现在我们转到三维空间中对旋转进行讨论。与平面上不同,在空间中的旋转稍微有些复杂,在对其进行讨论之前我们需要先描述一下什么是旋转。

什么是旋转?

在空间中的旋转可以由一条旋转轴以及一个旋转角来进行描述。但是,有一点需要注意的是,仅仅一条旋转轴以及一个角度还不能完全决定一个旋转,比如说,考虑z轴以及一个角度\theta,由于将其仅仅作为一条直线来说是没有方向的,我们无法决定是绕z轴进行哪个方向的旋转。

因此,为了描述一个旋转,我们还需要对旋转轴加上一个方向。也就是,我们需要用一个向量以及一个旋转角来描述。为此,我们来将旋转定义如下:

定义2. 一个空间中的旋转\rho: \R^3 \to \R^3由一个二元组(a, \theta)来进行描述。其中a\in \R^3是长度为1的向量,\theta为任意一个角度。这个旋转满足如下性质:

  1. \rho(a) = a,即\rho固定a不动。
  2. 对于垂直于a(过原点)的平面,\rho在这个平面上的作用相当于一个旋转。具体来说,从a这一点向原点看去,这是个绕原点逆时针\theta角的旋转。\Box

需要注意的是,(a, \theta)以及(-a, -\theta)均表示同一个旋转。

旋转与矩阵

首先,我们可以较为容易地验证,\rho是一个线性变换,这样我们就可以通过一个矩阵来对旋转进行描述。

设一个旋转(a, \theta)的矩阵为R,那么根据定义我们有Ra = a,也就是aR的特征值为1的特征向量。更进一步,考虑与a正交的子空间W=a^\perp,根据定义第二条可以知道W是一个不变子空间(亦即R作用到W上的元素之后仍然是W上的元素)。这样,我们将R限制到W上,现在这是一个二维的旋转,我们可以利用旋转矩阵进行描述,综合起来,R将会相似于如下矩阵(记为\hat R),

\begin{equation*} R \sim \begin{bmatrix} 1 & & \\ & \cos\theta & -\sin\theta \\ & \sin\theta & \cos\theta \end{bmatrix} = \hat R \end{equation*}

也就是存在一个可逆的矩阵P,使得R = P^{-1}\hat RP。根据这个结论,很显然地可以看出R是一个行列式为1的正交矩阵。

相反地,自然会问是否任意一个行列式为1的正交矩阵都对应一个旋转呢?结论是肯定的!

首先给出一个记号,


SO_3 := \{R \in M_3(\R) : R^TR=I, \det R = 1\}

即行列式为1的正交矩阵全体,称为特殊正交群。

接下来,考虑R \in SO_3的特征值\lambda,根据其正交性,|\lambda|=1。由于其特征多项式是三次多项式,其必然有一个实特征值,记为\lambda_1,另外两个特征值记为\lambda_2, \lambda_3。若其均为实数,那么根据\det R = 1可以知道必然存在为1的特征值,我们记为\lambda_1。那么\lambda_2 = \lambda_3 = \pm 1,否则\lambda_2 = \overline \lambda_3,在这里\overline \lambda_3表示\lambda_3的共轭。

\lambda_2记为e^{i\theta},那么\lambda_3 = e^{-i\theta}

可以验证R是可对角化的,即存在可逆矩阵P使得,

P^{-1}RP = \text{diag}(1, e^{i\theta}, e^{-i\theta})

再注意到如下两个矩阵相似

 \begin{bmatrix}
1 & & \\
& e^{i\theta} & \\
& & e^{-i\theta} \\
\end{bmatrix} \sim \begin{bmatrix}
1 & & \\
& \cos\theta & -\sin\theta \\
& \sin\theta & \cos\theta
\end{bmatrix}

这就说明了R是某个旋转对应的矩阵,同时旋转轴为a,旋转角为\theta-\theta。我们总结如下,

定理3. 一个空间中的旋转(a, \theta)的矩阵RSO_3中。同时,任意一个SO_3中的矩阵对应于一个旋转。\Box

旋转的性质

我们知道对于旋转矩阵R,存在P使得P^{-1}RP = \text{diag}(1, e^{i\theta}, e^{-i\theta}),那么考虑其迹,\tr(R) = \tr(P^{-1}RP) = 1 + 2\cos\theta。也就是,给定一个旋转矩阵,可以较为容易地知道其旋转角

 \theta = \arccos\frac{\tr(R) - 1}{2}

那么为了求其旋转轴,可以依照通常的计算特征向量的方法,计算特征值为1对应的单位特征向量(记为a)。为了确定这个旋转究竟是(a, \theta)还是(-a,\theta),需要计算e^{i\theta}以及e^{-i\theta}对应的单位特征向量u_1, u_2。然后计算矩阵P = [a, u_1, u_2]的行列式\det P,若为1则对应于(a, \theta),否则对应于(-a, \theta)

旋转的四元数表示

特殊酉群SU_2

现在先来看一个复数域上行列式为1的二阶酉矩阵U(即满足U^*U=I的矩阵,其中*表示共轭转置,即U^* = \overline U^T),可以验证其具有如下形式

 U = \begin{bmatrix}
\alpha & -\overline \beta \\
\beta & \overline \alpha
\end{bmatrix}

其中\alpha, \beta \in \mathbb C并且|\alpha|^2 + |\beta|^2 = 1。我们将这样的矩阵全体记为SU_2,称为特殊酉群。

如果将\alpha, \beta写出来,变成\alpha = a + bi, \beta = c + di, 其中a, b, c, d \in \R,那么

 U = \begin{bmatrix}
a + bi & -c + di \\
c + di & a - bi
\end{bmatrix}

现在记


I = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix},\
\bi = \begin{bmatrix} i & 0 \\ 0 & -i \end{bmatrix},\
\bj = \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix},\
\bk = \begin{bmatrix} 0 & i \\ i & 0 \end{bmatrix}

那么,U就可以表示为

 U = aI + b\bi + c\bj + d\bk

为了方便,我们列出这几个元素之间的运算:

 \begin{aligned}
\textbf{i}^2 = \textbf{j}^2 = \textbf{k}^2 &= -I, \\
\textbf{ij} = -\textbf{ji} &= \textbf{k}, \\
\textbf{jk} = -\textbf{kj} &= \textbf{i}, \\
\textbf{ki} = -\textbf{ik} &= \textbf{j}
\end{aligned}

另外,我们可以看到,\tr(U) = 2a,可以考虑按照\tr(U)将其进行分类,

 \mathcal C_t = \{ U \in SU_2 : \tr(U) = t \}

对于U_1, U_2 \in \mathcal C_t,我们知道他们的特征多项式均为\lambda^2 - \tr(U_1)\lambda + 1,因此它们是酉相似的,即存在P \in SU_2,使得U_1 = PU_2P^*。我们也称U_1U_2共轭。事实上,\{\mathcal C_t\}SU_2划分成为了多个不相交的共轭类,每个共轭类里的元素的秩都相同。

现在我们来考虑一下这样一个变换

 \gamma_P(A) = PAP^*,\ P\in SU_2

很容易验证\gamma_P(\alpha A + \beta B) = \alpha\gamma_P(A) + \beta\gamma_P(B),因此\gamma_P是一个线性变换,同时它将保持A的秩不变,也就是它将一个共轭类映到其自身。

将那些秩为0的矩阵全体记为\mathbb E = \mathcal C_0,那么将\gamma_P的定义域限制到\mathbb E上,即\gamma_P: \mathbb E \to \mathbb E

注意到\mathbb E中元素A形如x_1\bi + x_2\bj + x_3\bk,因此\mathbb E是一个三维的向量空间。\gamma_P可以用一个三阶矩阵来表示。接下来我们来看看这个矩阵的性质。

首先定义\mathbb E上的内积,

 \langle x_1\bi + x_2\bj + x_3\bk, y_1 \bi + y_2\bj + y_3\bk \rangle = \sum_{i=1}^3 x_iy_i

现在\mathbb E被做成一个内积空间,这个内积还可以被写成如下形式,

 \langle U, V \rangle = -\frac{1}{2}\tr(UV)

接下来考虑

 \begin{aligned}
\langle \gamma_P(U), \gamma_P(V) \rangle &= -\frac{1}{2}\tr(PUP^*PVP^*) \\
&= -\frac{1}{2}\tr(UV) = \langle U, V \rangle
\end{aligned}

这样\gamma_P就是\mathbb E上的一个正交变换。接下来观察其行列式,若其行列式为1那么我们就能够知道\gamma_P \in SO_3,它是一个旋转。

首先,\det \gamma_P关于P是一个连续的函数,而其值域是\{-1, 1\}。因此\det \gamma_P只能为其中之一,考虑特殊情况\gamma_I(A) = A,这个变换的行列式为1,那么我们就证明了\gamma_P的行列式也是1

接下来来观察一下SU_2中运算和SO_3运算的关系,

 \gamma_P\gamma_Q(A) = PQAQ^*P^* = PQA(PQ)^* = \gamma_{PQ}(A)

也就是说,SU_2SO_3中的运算是互相兼容的,这可以定义一个同态。我们归纳上述讨论如下,

定理4. 设 \gamma_P(A) = PAP^* 是一个从 \mathbb E\mathbb E 的映射,那么\gamma_P是一个正交变换且\det \gamma_P = 1,即\gamma_P \in SO_3

若定义 \varphi: SU_2 \to SO_3,使得\varphi(P) = \gamma_P,那么\varphi是一个群同态,即对任意P, Q \in SU_2,有\varphi(PQ) = \varphi(P)\varphi(Q)\Box

至此,我们可以通过SU_2中的元素来表示SO_3中的旋转,并且两个旋转的复合对应到SU_2中就相当于矩阵的乘法。

SU_2中进行旋转

接下来我们研究SU_2中的元素具体对应于SO_3中的什么旋转,以及如何利用SU_2来计算旋转变换。

具体来说,我们要研究\gamma_P对应的旋转是什么。首先P \in SU_2,那么可以将P表示如下,

 P = x_0I + x_1\bi + x_2\bj + x_3\bk = (\cos\theta)I + (\sin\theta)A

其中,A = \frac{1}{\sin\theta}(x_1\bi + x_2\bj + x_3\bk) \in \mathbb E

注意到

 \gamma_P(A) = (\cos\theta)^2A + (\sin\theta)^2AAA^* = A

那么A就是一个特征值为1的特征向量,若选取\{\bi, \bj, \bk\}\mathbb E的一组基,设A = x\bi + y\bj + z\bk,那么\gamma_P就相当于是绕着(x, y, z)的一个旋转。

接下来计算它的旋转角,我们知道,对于一个共轭类\mathcal C_t中的元素U来说,存在P\in SU_2使得

 P^{-1}UP = (\cos\theta)I + (\sin\theta)\bi \in \mathcal C_t

并且按照定理4,我们知道\gamma_{P^{-1}UP} = \gamma_{P}^{-1}\gamma_U\gamma_P,也就是\gamma_{P^{-1}UP}\gamma_U有相同的秩(注意这是SO_3中的元素),那么它们对应的旋转角是相同的。

这样只需要考虑P = (\cos\theta)I + (\sin\theta)\bi的旋转角就可以知道\mathcal C_t中任意元素的旋转角了。

由于P是沿着\bi = (1, 0, 0)进行的旋转,我们将其作用于\bj = (0, 1, 0)上,

 \begin{aligned}
\gamma_P(\bj) &= [(\cos\theta)I + (\sin\theta)\bi]\cdot\bj\cdot[(\cos\theta)I - (\sin\theta)\bi] \\
&= (\cos 2\theta)\bj + (\sin 2\theta)\bk
\end{aligned}

现在我们知道\gamma_P的作用结果相当于一个(\bi, 2\theta)的旋转。总结一下可以得到

定理5. 取\{\bi, \bj, \bk\}\mathbb E中的一组基。

对于一个P = (\cos\theta)I + (\sin\theta)A,其中A = x_0\bi + y_0\bj + z_0\bk \in \mathbb E\gamma_P是一个\mathbb E中的(A, 2\theta)的旋转。

也就是对于X = x\bi + y\bj + z\bk \in \mathbb E,设\gamma_P(X) = x^\prime\bi + y^\prime\bj + z^\prime\bk \in \mathbb E,那么(x^\prime, y^\prime, z^\prime)相当于是将(x, y, z)沿着(x_0, y_0, z_0)逆时针旋转2\theta的结果。\Box

SU_2和单位四元数

实际上,SU_2提供了一个单位四元数的模型,两者之间有一个一一对应的关系,将I, \bi, \bj, \bk \in SU_2分别视为四元数的\textbf 1, \bi, \bj, \bk后就建立了这个对应关系。从SU_2对旋转的描述中我们可以看出四元数对旋转的描述。或者我们也可以直接利用SU_2来进行旋转的计算。

作为一个特殊情况,如果将\bj, \bk两个分量均设置为0,那么这就是一个传统的单位复数的模型,这也对应着平面上的旋转。

四元数和旋转矩阵

按照之前的定义,要计算旋转矩阵就只需要计算\gamma_P这个线性变换的变换矩阵,由于计算较为麻烦,同时结果十分复杂我们就略去这部分内容。

利用SU_2或四元数对旋转进行描述的一个优点就是其较为直观,可以简单提取出旋转轴以及旋转角的信息,而利用旋转矩阵描述,虽然可以简单提取旋转角的信息,但是对于旋转轴则需要计算特征向量,较为麻烦。

三维空间中的等距变换

依照定理1,一个\R^3中的等距变换可以写成r\rho_{(p, \theta)} t_a\rho_{(p, \theta)} t_a的形式。其中\rho_{(p, \theta)} \in SO_3是一个旋转变换(p, \theta)t_a是一个平移变换,r是一个镜面对称。

同样,我们可以类似平面的情况得到一些运算法则来化简一个复杂的等距变换,由于公式较为类似,就不再列出。

Miskcoo's Space,版权所有丨如未注明,均为原创
转载请注明转自:http://blog.miskcoo.com/2018/03/isometry_and_quaternion

miskcoo

顺利从福州一中毕业!感觉大学周围都是聚聚十分可怕QAQ 想要联系的话欢迎发邮件:miskcoo [at] gmail [dot] com

6 thoughts on “平面等距变换、三维空间的旋转和四元数

Leave a Reply

Your email address will not be published. Required fields are marked *

NOTE: If you want to add mathematical formulas, use $$ to wrap them. For example, use $$x_0$$ to get $$x_0$$.

If you want to get a newline, hit Enter twice, that is, use double newlines to get a newline.