欧拉角和四元数是三维几何变形的重要概念
Eulerian Angles
欧拉角是用来唯一地确定定点转动刚体位置的三个一组独立角参量,章动角
、进动角 和自转角 组成。
也分别叫做roll,yaw,pitch – 对应绕x轴,y轴,z轴旋转
一般应用欧拉角的三维变形的应用有许多种顺序,都是在上一次变形的基础上(轴固定在刚体上)进行下一步变形。
比较经典的变形顺序,yaw->pitch->roll
分别对应飞机的 偏航->俯仰->滚转
安全锁
安全锁问题算是欧拉角方法的一个短板
当pitch角度为
即只需要两步:
- pitch+roll
- pitch+yaw
即,在这种情况下,少了一个自由度
quaternions
四元数,推荐技术博客《理解四元数》
四元数就是在复数体系的基础上新增了两个虚数
基本定义
四元数的一般形式:
Hamilton的著名表达式(写在桥柱上):
以及类似于叉乘的式子:
有序四元数
有序对形式,来表示四元数:
其中的
使用这种表示法,我们可以更加容易展示四元数与复数之间的相似性。
另外还有四元数的加法形式,写成实四元数和纯四元数的和:
四元数性质
这里主要记录了四元数的一些基本性质,省略推导过程,若感兴趣推荐浏览技术文章
基本运算
加法
积
这个性质在形式上非常美观,该结论又与旋转的推导结论直接相关,过程繁琐,感兴趣看链接。
分类与表示
实四元数和纯四元数
- 实四元数对应复数中的实数
- 纯四元数对应复数中的纯虚数
单位四元数
给定任意的向量v,可以表示为一个系数和一个单位方向向量的乘积
将以上定义与纯四元数结合:
二元形式
单位四元数的定义和四元数的加法形式结合到一起,就能创造出一种类似于复数表示法的形式:
共轭与模
共轭四元数
共轭同复数,虚向量取反:
与共轭的乘积:
以上
为点乘运算,纯四元数求各个位的平方和
范数
四元数的范数定义:
可以表达四元数范数:
规范化
利用四元数范数的定义,就可以对四元数进行规范化。
逆
四元数的逆用
详细证明见,链接
点积
与向量点积类似,对应对应系数相乘求和:
利用四元数点积,来计算四元数间角度差:
旋转
仿照复数旋转数的表示方法,设计一个可以旋转3D空间的点的四元数:
注意四元数
具有方向性 为旋转轴
直接上结论:
- 单纯的
仅仅在 的向量 和 垂直时成立。 - 为修正旋转轴方向,
将纯四元数旋转了 的角度
故旋转四元数的一般形式为:
四元数插值
有两个比较典型的插值方式:
- SLERP
- SQUAD
- 提供了一种使得在朝向之间可以平滑过渡的方法。
- 对于单位四元数,逆向旋转可以通过对向量部分取反来实现。而且计算比矩阵求逆更快(如果矩阵未被标准正交化)
- 四元数->矩阵 比 欧拉角->矩阵 更快。
不足:浮点数的舍入运算错误,四元数可能无效。
- Post title: quaternions
- Create time: 2023-03-12 23:13:06
- Post link: computer-graphics/quaternions/
- Copyright notice: All articles in this blog are licensed under BY-NC-SA unless stating additionally.