群和2D旋转

2023-01-22  本文已影响0人  杜凌霄

定义

如果一个非空集合 G 上定义了一个二元运算 ∙ ,满足如下性质:

  1. 封闭性,即对于\forall a, b \in G,有a\cdot b \in G;
  2. 结合律,即对于\forall a, b, c \in G,有(a\cdot b)\cdot c = a \cdot (b\cdot c);
  3. 单位元:存在单位元e\in G,使得\forall a \in G,有e\cdot a = a \cdot e = a
  4. 逆元:\forall a \in G,存在b\in G,使得a\cdot b = b \cdot a = e

则称 G 关于运算 ∙ 构成一个(group),记为 (G,∙) ,或简记为 G 。

General Linear Group

所有可逆的矩阵组成的群称为一个矩阵群。我们一般处理的都是m行n列的矩阵,矩阵的入口都是实数。我们把这些矩阵记做M_{m,n}(R)

我们在上面的基础上加一个限制,也就是行和列都相等,那么我们可以得到General Linear Group。也就是说GL_n(R)是由N\times N的可逆矩阵组成的,并且矩阵元素都是实数:
GL_n(R) = \{A\in M_n(R),: det(A) \ne 0\}

Orthogonal Group

R上的正交群可以定义为
O(n) = \{A \in GL_n(R): A\cdot A^T = I \}
其中的二元运算\cdot就是常规的矩阵乘法运算,我们一般都省略掉。

从上面我们还可以知道
det(AA^T) = det(A)^2 = det(I) = 1 Rightarrow det(A) = \pm 1

O(n) = \{A \in O(n): det(A) = 1\} \cup \{A \in O(n): det(A) = -1\} = O(n)^+ \cup O(n)^-

Special Orghogonal Group

正交群里面行列式为1的部分组成的群叫做特殊正交群:
SO(n) = \{A \in O(n): det(A) = 1\} = \{A \in GL_n(R): A\cdot A^T = I, \text{ }det(A) = 1 \}
我们研究正交矩阵群,特别是特殊正交群的原因之一就是所谓的isometries

R^n上的isometries是一个保持距离的双射f: R^n \rightarrow R^n:
|| f(x) - f(y) || = || x - y||

也就是说,特殊正交群是保持距离的变换。

2D旋转

定义

[图片上传失败...(image-a992d5-1674467849856)]

如上图,向量\vec{OB}与x轴的夹角为\alpha,它旋转\beta角度之后得到向量\vec{OB'}。现在我们想知道点B'的坐标。

首先,我们假设向量\vec{OB}的长度为L,那么\vec{OB} = [L\cos\alpha, L\sin\alpha]^T。由于旋转并不改变
\begin{aligned} B'_x &= L\cos(\alpha+\beta) = L\cos\alpha \cos\beta - L\sin\alpha\sin\beta = B_x \cos\beta - B_y\sin\beta \\ B'_y &= L\sin(\alpha+\beta) = L\sin\alpha\cos\beta + L\cos\alpha\sin\beta = B_x \sin\beta + B_y\cos\beta \end{aligned}
写成矩阵形式就是
\begin{bmatrix}B'_x \\B'_y \end{bmatrix} = \begin{bmatrix} \cos\beta & -\sin\beta \\ \sin\beta & \cos\beta\end{bmatrix} \begin{bmatrix}B_x \\ B_y \end{bmatrix}
2D旋转\theta的旋转表达就是
R = \begin{bmatrix} \cos\beta & -\sin\beta \\ \sin\beta & \cos\beta\end{bmatrix}

SO(2)

我们很容易验证2D旋转矩阵R上对于矩阵乘这个二元运算构成一个群,并且满足特殊正交群的两个要求,我们把二维旋转矩阵称为二维特殊正交群SO(2)。

我们假设现在有两个2D旋转变换
\begin{aligned} R_1 &= \begin{bmatrix}\cos\alpha & -\sin\alpha \\ \sin\alpha & \cos\alpha \end{bmatrix} \\ R_2 &= \begin{bmatrix}\cos\beta & -\sin\beta \\ \sin\beta & \cos\beta \end{bmatrix} \end{aligned}
我们可以得到
\begin{aligned} R_1R_2 &= \begin{bmatrix}\cos(\alpha+\beta) & -\sin(\alpha+\beta) \\ \sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \\ R_2R_1 &= \begin{bmatrix}\cos(\alpha+\beta) & -\sin(\alpha+\beta) \\ \sin(\alpha+\beta) & \cos(\alpha+\beta) \end{bmatrix} \\ \end{aligned}
也就是R_1R_2 = R_2R_1。换句话说,2D旋转群具有交换性,是一个交换群。这个性质在旋转矩阵里面其实是比较特殊的,只有2维的旋转矩阵才具有。

SO(2)与R的关系

2D旋转矩阵虽然有4个元素,但是很容易看出它的自由度只有1,因为四个元素的变量都是旋转角度。

我们定义一个基
B = \begin{bmatrix}0 & -1 \\ 1 & 0 \end{bmatrix}
对于一个标量\alpha,它在这个基下的值为
S = \alpha B = \begin{bmatrix}0 & -\alpha \\ \alpha & 0 \end{bmatrix}
矩阵A是一个2维反对称矩阵。也就是说,标量和二维反对称矩阵是一一映射的。

我们定义从实数标量到反对称矩阵的变换R \rightarrow S
\wedge: R \rightarrow S: \alpha^{\wedge} = \begin{bmatrix}0 & -\alpha \\ \alpha & 0 \end{bmatrix}
同时,我们定义逆变换S \rightarrow R
\vee: S \rightarrow R: \begin{bmatrix}0 & -\alpha \\ \alpha & 0 \end{bmatrix}^{\vee} = \alpha

指数映射

对于标量,我们有泰勒展开
e^{x} = 1 + x + \frac{(x)^2}{2!} + \frac{(x)^3}{3!} + \cdots
对于矩阵M,我们定义M^0 = I。然后定义类似标量的形式我们定义矩阵的指数映射
exp(M) = I + M + \frac{(M)^2}{2!} + \frac{(M)^3}{3!} + \cdots
对于我们上面提到的基矩阵,我们有
\begin{aligned} B^1 &= B \\ B^2 &= \begin{bmatrix}0 & -1 \\ 1 & 0 \end{bmatrix}\begin{bmatrix}0 & -1 \\ 1 & 0 \end{bmatrix} = \begin{bmatrix}-1 & 0 \\ 0 & -1\end{bmatrix} \\ B^3 &= \begin{bmatrix}-1 & 0 \\ 0 & -1\end{bmatrix} \begin{bmatrix}0 & -1 \\ 1 & 0 \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ -1 & 0\end{bmatrix} = -B \\ B^4 &= -B^2 \\ B^5 &= B \\ \vdots \end{aligned}

然后我们根据这个指数映射计算一下2D反对称矩阵的指数映射
\begin{aligned} exp(S) & = exp(\alpha B) \\ & = I + \alpha B + \frac{\alpha^2}{2!}B^2 + \frac{\alpha^3}{3!}B^3 + \frac{\alpha^4}{4!}B^4 + \cdots \\ &= I + (\alpha - \frac{\alpha^3}{3!} + \frac{\alpha^5}{5!} + \cdots)B + (\frac{\alpha^2}{2!} - \frac{\alpha^4}{4!}+\cdots)B^2 \\ &= I + \sin\alpha B + (1-\cos\alpha)B^2 \\ &= \begin{bmatrix}1 & 0 \\0 & 1\end{bmatrix} + \sin\alpha \begin{bmatrix}0 & -1 \\ 1 & 0\end{bmatrix} + (1-\cos\alpha)\begin{bmatrix}-1 & 0 \\ 0 & -1\end{bmatrix} \\ &= \begin{bmatrix} \cos\alpha & -\sin\alpha \\ \sin\alpha & cos\alpha \end{bmatrix} \end{aligned}
也就是说上面定义的指数映射把一个2维反对称矩阵映射成了一个2维旋转矩阵。

我们也定一个一个对数映射
log(R) = log(\begin{bmatrix} \cos\alpha & -\sin\alpha \\ \sin\alpha & cos\alpha \end{bmatrix}) = \begin{bmatrix}0 & -\alpha \\ \alpha & 0 \end{bmatrix}
根据三角函数函数的周期性,我们可以看出旋转矩阵的对数映射其实是一个一对多的映射,因为\cos\alpha = \cos(\alpha + 2\pi n)。我们可以限制\alpha \in [0, \pi]来得到一个唯一的\alpha值。

我们还可以定义标量到2D旋转矩阵的变换以及旋转矩阵到标量的变换,它们上面的指数映射和对数映射一起列在下面:
\begin{aligned} \exp: &S\mapsto SO(3): &\exp(\begin{bmatrix}0 & -\alpha \\ \alpha & 0 \end{bmatrix}) &= \begin{bmatrix} \cos\alpha & -\sin\alpha \\ \sin\alpha & cos\alpha \end{bmatrix} \\ log: & SO(3) \mapsto S: &log(\begin{bmatrix} \cos\alpha & -\sin\alpha \\ \sin\alpha & cos\alpha \end{bmatrix}) &= \begin{bmatrix}0 & -\alpha \\ \alpha & 0 \end{bmatrix} \\ Exp: & R \mapsto SO(3): & Exp(\alpha) &= \begin{bmatrix} \cos\alpha & -\sin\alpha \\ \sin\alpha & cos\alpha \end{bmatrix} \\ Log: & SO(3)\mapsto R: & Log(\begin{bmatrix} \cos\alpha & -\sin\alpha \\ \sin\alpha & cos\alpha \end{bmatrix} ) &= \alpha \end{aligned}

更多文章在公众号“探知轩”发布,欢迎关注。

上一篇下一篇

猜你喜欢

热点阅读