四元数系列 - 2 三维空间中的旋转

三维空间中旋转公式的推导.

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

表示三维空间中旋转的方法有很多种, 我们这里关注轴角式 (Axis-angle) 的旋转. 我们讨论时总默认使用右手坐标系统, 并总假设旋转轴经过原点. 若旋转轴不过原点, 都可以进行 "平移到原点 - 进行旋转 - 平移回原处" 的等价操作.

假设有一个经过原点的旋转轴 , 我们需要将一个向量 沿该轴旋转 度, 变换到 :

这里用 四个自由度表示一个旋转, 是冗余的. 三维空间中表示一个方向只需两个自由度, 因此通过令 来消除旋转轴模长这个多余自由度.

1 旋转的分解

已知旋转轴 (), 可以将向量 分别沿平行 以及正交 的方向进行分解, 得到两个分量 , 即

分解示意图如下:

显然, 上的正交投影 (Orthogonal Projection),

由 (1) 式得

对于旋转后的向量 , 我们可以分别绕 旋转这两个分量, 再将旋转的结果相加.

2 平行分量的旋转

由于 方向与旋转轴 重合, 因此旋转后保持不变.

3 垂直分量的旋转

对于 的旋转, 示意图如下, 右侧为俯视图:

利用叉乘构造一个同时正交于 的向量 ,

已知 , 以及 夹角为 , 因此

共圆.

分别投影到 上作正交分解, 得到

4 空间向量的旋转

由式 (4, 5, 6) 得

最后将 (2, 3) 代入 (7), 即得, 三维空间中任一向量 绕单位向量 旋转 角度之后的

这就是著名的罗德里格旋转公式 (Rodrigues' Rotation Formula).

参考文献

  1. Krasjet. 四元数与三维旋转. https://github.com/Krasjet/quaternion