3D数学笔记——四元数的旋转

  • 四元数与3D旋转

          现在我们可以来讨论四元数与3D旋转之间的关联了。

          回忆一下之前讨论过的3D旋转,如果我们需要将一个向量v沿着一个用单位向量所定义的u旋转θ度,那么我们可以将这个向量v分解为正交与旋转轴的v⊥ 以及平行于旋转轴的 v∥.我们可以对这两个分量分别进行旋转,获得v ′ ⊥ 和 v ′ ∥.

将它们相加就是 v 旋转之后的结果 v ′ = v ′ ∥ + v ′ ⊥.

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

                     3D数学笔记——四元数的旋转

        那么我们就能得到

                        3D数学笔记——四元数的旋转

       和之前一样,我们在这里也分开讨论 v⊥ 和 v∥ 的情况.

1.  v⊥ 的旋转

     我们首先讨论正交与旋转轴的v⊥.我们之前推导过,如果向量v⊥.正交与旋转轴u,那么

                                                          3D数学笔记——四元数的旋转

      3D数学笔记——四元数的旋转但是我们仍然遗留下来一个u × v⊥,幸运的是,利用四元数的性质,我们可以将它写成四元数的形式,我们之前推导过,如果有两个纯四元数3D数学笔记——四元数的旋转类似地,

                                               3D数学笔记——四元数的旋转

因为 v⊥ 正交于 u,所以 u · v⊥ = 0,也就是说

                                                       3D数学笔记——四元数的旋转

注意,uv⊥ 同样是一个纯四元数.我们离最终的结论已经很近了!将这个等式以及 之前定义的纯四元数代入,我们就能获得:

                                                   3D数学笔记——四元数的旋转

因为四元数的乘法遵守分配律,我们可以继续变换这个等式:

                                                     3D数学笔记——四元数的旋转

你应该可以注意到,如果我们将 (cos(θ) + sin(θ)u) 看做是一个四元数,我们就能 将旋转写成四元数的乘积了.到此为止,我们已经将旋转与四元数的积联系起来了. 如果令 q = cos(θ) + sin(θ)u,我们能得到:

                                                  3D数学笔记——四元数的旋转

如果我们能构造一个 q,那么我们就能完成这个旋转了.我们可以对 q 继续进行变 形:

                                                    3D数学笔记——四元数的旋转

    也就是说如果旋转轴u的坐标为3D数学笔记——四元数的旋转旋转角为θ,那么完成这一旋转所需要的四元数q可以构造成

                                                      3D数学笔记——四元数的旋转

    这样我们就完成了对v⊥ 的旋转,

                                                  3D数学笔记——四元数的旋转

2.   v∥ 的旋转

      接下来是平行于旋转轴的 v∥.我们之前讨论过,如果一个向量 v∥ 平行于 u,那么 旋转不会对它作出任何的变换,也就是说:

                                                          3D数学笔记——四元数的旋转

3.   v 的旋转

       有了这些知识,我们能够获得一般情况下 v ′ 的结果了:

                           3D数学笔记——四元数的旋转

我们当然可以像以前那样将 v∥ 和 v⊥ 拆开,继续进行化简.但是这里我们不会这么 做,因为我们有更好的办法来进一步化简它. 在进一步化简之前,我们需要证明几个引理:

    3D数学笔记——四元数的旋转      

这个引理的证明很简单,只需要使用 Graßmann 积和一些三角恒等式就可以了:

3D数学笔记——四元数的旋转

其实这个引理的几何意义就是,如果绕着同一个轴 u 连续旋转 θ 度两次,那么所做 出的变换等同于直接绕着 u 旋转 2θ 度. 有了这个引理,我们再来回忆一下四元数逆的定义:

                                                         3D数学笔记——四元数的旋转

现在,我们就能够对原本的旋转公式进行变形了:

           3D数学笔记——四元数的旋转

在这里,我们引入了一个新的四元数 3D数学笔记——四元数的旋转根据刚刚证明的 引理,我们可以验证

                                 3D数学笔记——四元数的旋转

你应该能够注意到,和 q 一样,∥p∥ = 1,p 也是一个单位四元数,也就是

                                      3D数学笔记——四元数的旋转

将这个结果代入之前的等式:

                              3D数学笔记——四元数的旋转

我们还能进一步化简这个公式,但在继续之前还需要再证明两个引理:

               3D数学笔记——四元数的旋转

这个引理的证明同样需要用到 Graßmann 积.我们先计算等式左边:

    3D数学笔记——四元数的旋转

接下来计算等式的右边:

          3D数学笔记——四元数的旋转

下面是第二个引理:

    3D数学笔记——四元数的旋转

它的证明与之前的引理完全类似:

   3D数学笔记——四元数的旋转

3D数学笔记——四元数的旋转

现在,我们就能对之前的公式做出最后的变形了:

                                      3D数学笔记——四元数的旋转

显然,(v∥ + v⊥) 其实就是 v,所以

                                        3D数学笔记——四元数的旋转

  •    旋转的复合

           在这一小节里,我们来证明一下使用四元数的旋转是可以复合的.旋转的复合其实 在我们之前证明 q 2 = [cos(2θ), sin(2θ)u] 的时候就已经涉及到一点了,但是这里我 们考虑的是更一般的情况.

           假设有两个表示沿着不同轴,不同角度旋转的四元数 q1, q2,我们先对 v 进行 q1 的 变换,再进行 q2 的变换,变换的结果是什么呢?

         我们不妨将这两次变换分步进行.首先,我们实施 q1 的变换,变换之后的 v为:

                                                                   3D数学笔记——四元数的旋转

接下来,对 v ′ 进行 q2 的变换,得到 v ′′:

                                                                 3D数学笔记——四元数的旋转

我们需要对这两个变换进行复合,写为一个等价变换的形式:

                                                                 3D数学笔记——四元数的旋转

为了写成上面这种形式,我们还需要一个引理:

            3D数学笔记——四元数的旋转

仍然使用与之前类似的方法:

             3D数学笔记——四元数的旋转 

所以,我们能得到: 

                             3D数学笔记——四元数的旋转

           这也就是说,qnet = q2q1.注意四元数乘法的顺序,我们先进行的是 q1 的变换,再 进行 q2 的变换.这和矩阵与函数的复合非常相似,都是从右往左叠加.

  • 双倍覆盖问题

          四元数与 3D 旋转的关系并不是一对一的,同一个 3D 旋转可以使用两个不同的四 元数来表示.对任意的单位四元数

3D数学笔记——四元数的旋转,q 与 −q 代表的是同 一个旋转.如果 q 表示的是沿着旋转轴 u 旋转 θ 度,那么 −q 代表的是沿着相反的旋 转轴 −u 旋转 (2π − θ) 度

        3D数学笔记——四元数的旋转

所以,这个四元数旋转的角度为 2 π − 1 2 θ = 2π − θ.从下面的图中我们可以看 到,这两个旋转是完全等价的:

               3D数学笔记——四元数的旋转

其实从四元数的旋转公式中也能推导出相同的结果:

                                                             3D数学笔记——四元数的旋转