本文主要整理自 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 指数形式
与复数的欧拉公式类似, 四元数也有一个类似的公式.
若
因此,
利用指数表示, 可以将式 (3) 的四元数旋转公式改写为指数形式:
任意向量
有了四元数的指数形式, 便可定义自然对数形式, 对任意单位四元数
进而可定义单位四元数的幂运算
可以看到, 一个单位四元数的
参考文献
- Krasjet. 四元数与三维旋转[OL]. https://github.com/Krasjet/quaternion
- Andrew J. Hanson. Visualizing Quaternions[M]. Elsevier. 2004.