四元数与旋转矩阵
贡献者: addis; JierPeter
预备知识 旋转矩阵的导数
,四元数
,罗德里格旋转公式、绕轴旋转矩阵
四元数可以用来简洁地表示三维空间中的旋转,极大地减少了计算量。所有模长为 的四元数 与所有可能的(绕原点的)三维旋转存在一一对应关系。
三维空间中的一个向量表示为标部为 的四元数:,简记为 。如果我们绕着一个单位向量 把 旋转一个角度 ,所得的结果应该是哪个向量呢?任意模长为 的四元数都可以表示为
那么旋转后的向量 就可以表示为
其中 表示 的逆, 表示 的共轭(
定义 2 ),满足 ,易证
表示绕 旋转 。
例如当 时, 是单位元,。又例如取 ,它代表一个 轴上的单位向量。如果想要把它绕着 轴上的单位向量转 ,那么结果向量的四元数表示应该是 。按照我们定义的规则,旋转表示为四元数 ,,按照四元数的乘法规则易得 。
证明
直接计算式 2 得(使用连续叉乘的化简以及三角降幂公式):
这正是直接使用罗德里格旋转公式(
式 1 )使 绕 旋转 的结果。
一点补充:考虑到四元数限定向量方向时退化为复数(见四元数的讨论),故 的情况其实可以直接套用复数的交换性来得到,即 。
再来证明 和三维旋转的一一对应关系:若 表示同一个旋转,那么对任意 都有
也就是对任意 都有
所以必定有 ,即 。证毕。
1. 旋转的复合
四元数的乘法运算(式 3 )可以把两次旋转合并为一次旋转。注意 表示先做 的旋转,再做 的旋转。另外易证 。
由于一般来说四元数乘法不满足交换律,所以两次旋转也一般不能交换,除非两次转动的转轴(两四元数的矢部)共线。
证明:令 经过 旋转变为 ,再经过 旋转变为 ,则
证毕。
2. 旋转矩阵
令四元数 表示绕 方向以右手定则旋转 的矩阵,其中
则对应的三维旋转矩阵(
式 3 )可以表示为
特殊地, 时,四元数为 ,对应单位矩阵,无任何旋转。另外由上一节的分析可知,若 的旋转矩阵为 ,那么 对应的旋转矩阵就是 。
3. 时间导数
若从坐标系 到坐标系 的基底变换矩阵为 ,当 相对于 绕原点以角速度 旋转时有(式 2 )
其中 乘以任意位置矢量 等于
若旋转矩阵 对应的四元数为 ,则
这里的 表示对四个标量中的每个分别求导。
推导:把 分解为 和 两次旋转,
其中 相当于以瞬时角速度 旋转时间
注意 ,所以
式 13 中的极限就是
代入
式 13 得
式 12 。