欧拉角:将刚体绕某一轴的一次旋转,分解为依次分别绕X、Y、Z轴的三次旋转。这三个轴分别旋转的转动角度,就是一组三个欧拉角。
具体旋转步骤:
- 饶世界坐标系的z轴旋转α°
- 饶物体坐标系的x轴旋转β°
- 饶物体坐标系的z轴旋转γ°
欧拉角的坐标系:
- y-x-z
- heading-pitch-bank(世界坐标系)
- yaw-pitch-row(物体坐标系)
万向锁:一旦选择±90°作为pitch角,就会导致第一次旋转和第三次旋转等价,整个旋转表示系统被限制在只能绕竖直轴(y轴)旋转,丢失了一个表示维度
万向锁的原因:由于欧拉角的三个轴向有y嵌套x嵌套z的关系,也就是如果x(pitch)轴旋转90°以后,其实是带动z(row)轴也旋转了90°,让xz轴重合并垂直于y轴,于是如果y轴旋转只能带动xz轴竖直旋转,与z轴旋转仅带动他本身效果一致,从而丢失了一个维度的自由度。
四元数:
- 四元数被定义为表示3D空间旋转的一种方式,它由一个x、y、z组成的三维向量v和一个标量w组成
- 如: q = (v,w)四元数的形态有些类似于轴角的表示方式,但与轴角的含义完全不同
- p = (v,w) = (sin(α/2)n, cos(α/2)) α为旋转角度,n 为旋转轴的单位向量。
四元数的优势:
- 解决万向节死锁
- 仅需4个浮点数,相比矩阵更轻量
- 无论求逆、串联等操作,相比矩阵更高效
四元数的计算:
- 相乘:
- q3 = q1 * q2
- 两个四元数相乘得到一个新的四元数
- 代表两个旋转量的叠加,相当于旋转
- 注意:旋转相对的坐标系是物体自身坐标系
- 乘向量:
- v2 = q1 * v1
- 四元数乘向量返回一个新向量
- 可以将指定向量旋转对应四元数的旋转量,相当于旋转向量
- 注意:四元数必须在前
Comments | 0 条评论