- 四元数与3D旋转
现在我们可以来讨论四元数与3D旋转之间的关联了。
回忆一下之前讨论过的3D旋转,如果我们需要将一个向量v沿着一个用单位向量所定义的u旋转θ度,那么我们可以将这个向量v分解为正交与旋转轴的v⊥ 以及平行于旋转轴的 v∥.我们可以对这两个分量分别进行旋转,获得v ′ ⊥ 和 v ′ ∥.
将它们相加就是 v 旋转之后的结果 v ′ = v ′ ∥ + v ′ ⊥.
我们可以将这些向量定义为纯四元数:
那么我们就能得到
和之前一样,我们在这里也分开讨论 v⊥ 和 v∥ 的情况.
1. v⊥ 的旋转
我们首先讨论正交与旋转轴的v⊥.我们之前推导过,如果向量v⊥.正交与旋转轴u,那么
但是我们仍然遗留下来一个u × v⊥,幸运的是,利用四元数的性质,我们可以将它写成四元数的形式,我们之前推导过,如果有两个纯四元数类似地,
因为 v⊥ 正交于 u,所以 u · v⊥ = 0,也就是说
注意,uv⊥ 同样是一个纯四元数.我们离最终的结论已经很近了!将这个等式以及 之前定义的纯四元数代入,我们就能获得:
因为四元数的乘法遵守分配律,我们可以继续变换这个等式:
你应该可以注意到,如果我们将 (cos(θ) + sin(θ)u) 看做是一个四元数,我们就能 将旋转写成四元数的乘积了.到此为止,我们已经将旋转与四元数的积联系起来了. 如果令 q = cos(θ) + sin(θ)u,我们能得到:
如果我们能构造一个 q,那么我们就能完成这个旋转了.我们可以对 q 继续进行变 形:
也就是说如果旋转轴u的坐标为旋转角为θ,那么完成这一旋转所需要的四元数q可以构造成
这样我们就完成了对v⊥ 的旋转,
2. v∥ 的旋转
接下来是平行于旋转轴的 v∥.我们之前讨论过,如果一个向量 v∥ 平行于 u,那么 旋转不会对它作出任何的变换,也就是说:
3. v 的旋转
有了这些知识,我们能够获得一般情况下 v ′ 的结果了:
我们当然可以像以前那样将 v∥ 和 v⊥ 拆开,继续进行化简.但是这里我们不会这么 做,因为我们有更好的办法来进一步化简它. 在进一步化简之前,我们需要证明几个引理:
这个引理的证明很简单,只需要使用 Graßmann 积和一些三角恒等式就可以了:
其实这个引理的几何意义就是,如果绕着同一个轴 u 连续旋转 θ 度两次,那么所做 出的变换等同于直接绕着 u 旋转 2θ 度. 有了这个引理,我们再来回忆一下四元数逆的定义:
现在,我们就能够对原本的旋转公式进行变形了:
在这里,我们引入了一个新的四元数 根据刚刚证明的 引理,我们可以验证
你应该能够注意到,和 q 一样,∥p∥ = 1,p 也是一个单位四元数,也就是
将这个结果代入之前的等式:
我们还能进一步化简这个公式,但在继续之前还需要再证明两个引理:
这个引理的证明同样需要用到 Graßmann 积.我们先计算等式左边:
接下来计算等式的右边:
下面是第二个引理:
它的证明与之前的引理完全类似:
现在,我们就能对之前的公式做出最后的变形了:
显然,(v∥ + v⊥) 其实就是 v,所以
- 旋转的复合
在这一小节里,我们来证明一下使用四元数的旋转是可以复合的.旋转的复合其实 在我们之前证明 q 2 = [cos(2θ), sin(2θ)u] 的时候就已经涉及到一点了,但是这里我 们考虑的是更一般的情况.
假设有两个表示沿着不同轴,不同角度旋转的四元数 q1, q2,我们先对 v 进行 q1 的 变换,再进行 q2 的变换,变换的结果是什么呢?
我们不妨将这两次变换分步进行.首先,我们实施 q1 的变换,变换之后的 v为:
接下来,对 v ′ 进行 q2 的变换,得到 v ′′:
我们需要对这两个变换进行复合,写为一个等价变换的形式:
为了写成上面这种形式,我们还需要一个引理:
仍然使用与之前类似的方法:
所以,我们能得到:
这也就是说,qnet = q2q1.注意四元数乘法的顺序,我们先进行的是 q1 的变换,再 进行 q2 的变换.这和矩阵与函数的复合非常相似,都是从右往左叠加.
- 双倍覆盖问题
四元数与 3D 旋转的关系并不是一对一的,同一个 3D 旋转可以使用两个不同的四 元数来表示.对任意的单位四元数
,q 与 −q 代表的是同 一个旋转.如果 q 表示的是沿着旋转轴 u 旋转 θ 度,那么 −q 代表的是沿着相反的旋 转轴 −u 旋转 (2π − θ) 度
所以,这个四元数旋转的角度为 2 π − 1 2 θ = 2π − θ.从下面的图中我们可以看 到,这两个旋转是完全等价的:
其实从四元数的旋转公式中也能推导出相同的结果: