quaternions
Carpe Tu Black Whistle

欧拉角和四元数是三维几何变形的重要概念

Eulerian Angles

欧拉角是用来唯一地确定定点转动刚体位置的三个一组独立角参量,章动角、进动角和自转角组成。

image

也分别叫做roll,yaw,pitch – 对应绕x轴,y轴,z轴旋转

一般应用欧拉角的三维变形的应用有许多种顺序,都是在上一次变形的基础上(轴固定在刚体上)进行下一步变形。

比较经典的变形顺序,yaw->pitch->roll
分别对应飞机的 偏航->俯仰->滚转

安全锁

安全锁问题算是欧拉角方法的一个短板

当pitch角度为以后,roll与yaw等效
即只需要两步:

  1. pitch+roll
  2. pitch+yaw
    即,在这种情况下,少了一个自由度

quaternions

四元数,推荐技术博客《理解四元数》

四元数就是在复数体系的基础上新增了两个虚数,这样把复数的概念拓展到3维空间。

基本定义

四元数的一般形式:

Hamilton的著名表达式(写在桥柱上):

以及类似于叉乘的式子:

有序四元数

有序对形式,来表示四元数:

其中的,也可以用它各自独立的3个分量表示:

使用这种表示法,我们可以更加容易展示四元数与复数之间的相似性。

另外还有四元数的加法形式,写成实四元数和纯四元数的和:

四元数性质

这里主要记录了四元数的一些基本性质,省略推导过程,若感兴趣推荐浏览技术文章

基本运算

加法

这个性质在形式上非常美观,该结论又与旋转的推导结论直接相关,过程繁琐,感兴趣看链接。

分类与表示

实四元数和纯四元数

  • 实四元数对应复数中的实数
  • 纯四元数对应复数中的纯虚数

单位四元数

给定任意的向量v,可以表示为一个系数和一个单位方向向量的乘积

将以上定义与纯四元数结合:

二元形式

单位四元数的定义和四元数的加法形式结合到一起,就能创造出一种类似于复数表示法的形式:

共轭与模

共轭四元数

共轭同复数,虚向量取反:

与共轭的乘积:

以上为点乘运算,纯四元数求各个位的平方和

范数

四元数的范数定义:

可以表达四元数范数:

规范化

利用四元数范数的定义,就可以对四元数进行规范化。

四元数的逆用$

详细证明见,链接

点积

与向量点积类似,对应对应系数相乘求和:

利用四元数点积,来计算四元数间角度差:

旋转

仿照复数旋转数的表示方法,设计一个可以旋转3D空间的点的四元数:

注意四元数具有方向性
为旋转轴

直接上结论:

  • 单纯的仅仅在的向量垂直时成立。
  • 为修正旋转轴方向,将纯四元数旋转了的角度

旋转四元数的一般形式为:

四元数插值

有两个比较典型的插值方式:

  1. SLERP
  2. SQUAD

  • 提供了一种使得在朝向之间可以平滑过渡的方法。
  • 对于单位四元数,逆向旋转可以通过对向量部分取反来实现。而且计算比矩阵求逆更快(如果矩阵未被标准正交化)
  • 四元数->矩阵 比 欧拉角->矩阵 更快。

不足:浮点数的舍入运算错误,四元数可能无效。