四元数系列 - 4 四元数与三维旋转

讨论四元数与三维空间中旋转的关系.

本文主要整理自 Krasjet 的 "四元数与三维旋转" 第三章.

1 四元数与三维空间中的旋转

回忆前一节中讨论的内容:

要计算一个向量 绕一个单位向量定义的旋转轴 旋转 角度, 可以将向量 沿旋转轴的正交方向与平行方向进行分解 , 然后分别对这两个分量进行旋转得到 , 再将它们相加即为向量 旋转后的结果 .

我们可以将这些向量定义为纯四元数:

那么

下面分别讨论垂直分量 和平行分量 的旋转.

1.1 垂直分量的旋转

根据之前的推导, 若向量 正交于旋转轴 , 则

要将该式转换为四元数的形式, 还须探讨 .

基于纯四元数的性质, 我们知道, 对于两个纯四元数 , , 有

由于此处 , 因此 依然是一个纯四元数.

现在可以将式 (1) 代换为四元数的形式, 并根据乘法分配律作变换

作为一个四元数, 的旋转便转换为四元数乘积的形式.

这样的 也容易构造:

因此得到以下结论:

正交于单位向量定义的旋转轴 时, 旋转 角度后的 可以通过四元数乘法获得. 令 , , 则:

另外由于 , 因此

这里构造出来的 为单位四元数. 类比复数与旋转的关系, 这里的 代表的变换对于原向量只是一个纯旋转, 而不产生缩放.

1.2 平行分量的旋转

根据之前的讨论, 若一个向量 平行于旋转轴 , 则旋转后保持不变. 因此 旋转 角度后的 用四元数表示为

1.3 三维空间向量的旋转

根据上述结论, 我们可以得到一般情况下 的结果

其中 .

在进一步讨论之前, 先引入几个引理.

引理 1: 若 , 且 为单位向量, 则 .

这个引理很容易通过 Graßmann 积证明. 其几何意义为, 绕旋转轴 连续旋转 角度两次, 相当于直接绕旋转轴 旋转 角度.

引理 2: 设 为纯四元数, , 其中 为单位向量, . 若 平行于 , 则 .

引理 3: 设 为纯四元数, , 其中 为单位向量, . 若 正交于 , 则 .

引理 2 和 3 也都容易通过 Graßmann 积证明, 证明过程中注意条件 , 即可.

, 即 . 可验证, 也是一个单位四元数, 即 .

基于以上三个引理, 我们对式 (2) 进行变形:

至此, 我们成功地用四元数乘法表示了三维空间中的旋转:

任意向量 沿着以单位向量定义的旋转轴 旋转 角度后的向量 可以使用四元数乘法来获得. 令 , , 则

可以证明, 式 (3) 与之前推导的罗德里格旋转公式完全等价:

证明中需要用到叉乘公式 , 以及倍角公式 , .

对于所有形如上式中 这样的旋转四元数, 它们的实部只是一个角度的余弦值. 因此对于单位四元数 , 我们可以直接获得它所对应的旋转角度 和旋转轴 :

2 三维旋转的矩阵形式

从式 (3) 可以容易地推导出四元数旋转的矩阵形式.

根据之前介绍的四元数矩阵形式, 左乘四元数 等同于左乘矩阵:

右乘四元数 等同于左乘矩阵:

, , , , , 可以将 改写为矩阵形式:

以上就是三维旋转的四元数矩阵形式. 矩阵的右下 部分即为三维空间中的轴角旋转矩阵.

任意向量 沿着以单位向量定义的旋转轴 旋转 角度后的向量 可以使用矩阵乘法得到. 令 , , , , 则

3 旋转的复合

引理 4: 对任意四元数 , , 有 .

该引理很容易通过 Graßmann 积证明. 转换为矩阵形式为 , 结论也是显然的.

假设有两个表示沿着不同轴不同角度旋转的四元数 , 我们先对 进行 的旋转, 再进行 的旋转. 第一次变换的结果 与第二次变换的结果 分别表示为

, 则两个旋转可复合为一个等价的旋转 .

注意, 这里的等价旋转并不是先后沿着 的两个旋转轴进行两次旋转, 而是沿着一个全新的轴进行一次等价旋转, 只有最终的旋转结果相同.

四元数乘法的顺序和矩阵或函数类似, 都是从右往左叠加, 很容易推广到多个旋转的复合. 此时若再进行第三个旋转 , 则

等价复合旋转即为 .

4 双倍覆盖

四元数与三维旋转的关系不是一对一的, 同一个三维旋转可以用两个不同的四元数来表示.

对任意的单位四元数 ,

表示沿着相反的旋转轴 旋转 角度, 与 表示的是同一个旋转. 从下图也可以看出两个旋转完全等价.

单位四元数与三维旋转之间的映射为 "2 对 1 满射同态" (2-1 Surjective Homomorphism), 或者说单位四元数双倍覆盖 (Double Cover) 了三维旋转. 所有的单位四元数都对应着一个三维旋转.

虽然 为不同的单位四元数, 但它们的旋转矩阵是完全相同的, 因此旋转矩阵不会出现双倍覆盖的问题.

5 指数形式

与复数的欧拉公式类似, 四元数也有一个类似的公式.

为单位向量, 那么对于单位四元数 , 有

因此, 可以使用指数表示为 . 该公式证明与欧拉公式证明类似, 使用级数展开即可, 证明过程见原文附录1.

利用指数表示, 可以将式 (3) 的四元数旋转公式改写为指数形式:

任意向量 沿着以单位向量定义的旋转轴 旋转 角度后的向量 可以使用四元数的指数形式表示. 令 , , 则

有了四元数的指数形式, 便可定义自然对数形式, 对任意单位四元数 ,

进而可定义单位四元数的幂运算

可以看到, 一个单位四元数的 次幂等同于将它的旋转角度缩放至 倍, 且不会改变旋转轴.

参考文献

  1. Krasjet. 四元数与三维旋转[OL]. https://github.com/Krasjet/quaternion
  2. Andrew J. Hanson. Visualizing Quaternions[M]. Elsevier. 2004.