欧拉角

欧拉角可以看做一个坐标,此坐标都是相对于同一个初始状态即(0,0,0)即物体坐标系和世界坐标系重合,且三角度都是0,从此初试状态开始,按照定义的旋转顺序,按照静态或动态的方式,旋转指定的角度,从而得到最终的状态。

1.欧拉角给出旋转角度的同时也要给出旋转顺序,顺序不同结果也不同

2.根据旋转选择的坐标系,可以分为静态和动态:

a. 静态:即绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态。

b. 动态:即绕物体坐标系三个轴的旋转,由于物体旋转过程中坐标轴随着物体做相同的转动,所以称为动态。使用动态欧拉角会出现万向锁现象;静态欧拉角不存在万向锁的问题。

俯仰角 pitch

航向角  yaw

滚转角 Roll

对于坐标系E下的欧拉角(α,β,r),三个绕轴旋转的旋转矩阵绕的是什么坐标系下的轴?和以下哪个旋转矩阵是等价的?

  1. 绕坐标系E下的x轴旋转α,绕坐标系E下的y轴旋转β,绕坐标系E下的z轴旋转r,三个矩阵的复合
  2. 绕坐标系E下的x轴旋转α,绕 坐标系E在绕x轴旋转α后的新系E'下的y轴旋转β,绕 坐标系E'在绕y轴旋转β后的新系E''下的z轴旋转r,三个矩阵的复合

事实上两种理解都可以,当然,两种转法并不等价,下面来解释这个问题;当我们讲到坐标系E下的欧拉角(α,β,r)时,这句话是有歧义的,我们必须定义旋转顺序,因为旋转顺序会影响旋转结果。

如果假设旋转顺序是先绕x轴再y轴再z轴,x-y-z,那么这个欧拉角对应的旋转矩阵是指上述的2所表示的旋转矩阵。

如果假设旋转顺序是先绕z轴再y轴再x轴,z-y-x,那么这个欧拉角对应的旋转矩阵是指上述的1所表示的旋转矩阵(当然也可以理解是2中的旋转"绕坐标系E下的z轴旋转r,绕 坐标系E在绕z轴旋转r后的新系E'下的y轴旋转β,绕 坐标系E'在绕y轴旋转β后的新系E''下的x轴旋转α,三个矩阵的复合",这里是为了验证绕物体自身坐标系按z-y-x旋转 和 绕 世界坐标系按 x-y-z旋转是等价的);

下面来证明两种复合方式是相等的,为了方便证明先定义一些记号:

  • 绕坐标系E下的x轴旋转α的旋转矩阵为Rx,
  • 绕坐标系E下的y轴旋转β的旋转矩阵为Ry,
  • 绕坐标系E下的z轴旋转r的旋转矩阵为Rz,
  • 绕坐标系E下的z轴旋转r的旋转矩阵为Rr(Rr=Rz),
  • 绕 坐标系E在绕z轴旋转r后的新系E'下的y轴旋转β的旋转矩阵为Rb,
  • 绕 坐标系E'在绕y轴旋转β后的新系E''下的x轴旋转α的旋转矩阵为Ra,
  • 将矩阵R的逆记作R~

求证:Rx*Ry*Rz = Rr*Rb*Ra

证明:
Rr = Rz  定义就是一样的,显然相等

Rb = Rr~*Ry*Rr 要得到绕 坐标系E在绕z轴旋转r后的新系E'下的y轴旋转β的旋转矩阵为Rb,可以先应用Rr~这时可以视作在E下,然后使用E下的旋转Ry绕旧的y轴旋转,在应用Rr转回到E'

Ra = (Rr*Rb)~*Rx*(Rr*Rb) 理由同上

所以 Rr*Rb * Ra
         =Rr*Rb * (Rr*Rb)~*Rx*(Rr*Rb)
         =(Rr*Rb)* (Rr*Rb)~*Rx*(Rr*Rb)
         =Rx*(Rr*Rb)
         =Rx*(Rr*Rr~*Ry*Rr)
         =Rx*Ry*Rz =左边

这与DirectX在文档中对D3DXMatrixRotationYawPitchRoll的描述是一致的

D3DXMATRIX * D3DXMatrixRotationYawPitchRoll(
  D3DXMATRIX *pOut,
  FLOAT Yaw,     //绕y轴的转动角
  FLOAT Pitch,   //绕x轴的转动角
  FLOAT Roll     //绕z轴的转动角
);

The order of transformations is roll first, then pitch, then yaw. Relative to the object's local coordinate axis, this is equivalent to rotation around the z-axis, followed by rotation around the x-axis, followed by rotation around the y-axis.

万向节死锁

如视频https://www.bilibili.com/video/av9140886中所讲和上述旋转方式2的描述,在物体绕自身的坐标系旋转时,因为上一次的旋转,会导致物体自身的坐标系发生变化;欧拉角的三个轴的旋转顺序是确定的,当指定第二个旋转轴的旋转角度为90度时,在世界坐标系下观察这个旋转过程,会发现在实际旋转过程中,第一个旋转轴和第二个旋转轴正交,第三个旋转轴和第二个旋转轴正交,但第一个旋转轴和第三个旋转轴是重合的,此时三个万向节其中两个的轴发生重合时,会失去一个自由度的情形,从而导致万向节锁。

以上参考:

  • http://www.chenbinpeng.com/2017/01/23/%E6%AC%A7%E6%8B%89%E8%A7%92%E4%B8%8E%E4%B8%87%E5%90%91%E8%8A%82%E6%AD%BB%E9%94%81/
  • https://www.jianshu.com/p/b796f88c8470
  • https://blog.csdn.net/ideallic/article/details/52869687
  • https://blog.csdn.net/xiaoyink/article/details/84670383
  • https://www.bilibili.com/video/av9140886

3D数学基础——欧拉角与万向节死锁相关推荐

  1. 欧拉角、万向节死锁理解

    欧拉角.万向节死锁理解 欧拉角理解 举例讲解 顺规.内旋与外旋 顺规 内旋与外旋 总结 东北天坐标系 数学表示 公式推导 举例计算 万向节死锁理解 说明 形象表示 数学表示 欧拉角理解 举例讲解 欧拉 ...

  2. 如何脱离数学推导理解欧拉角与万向节死锁

    如何脱离数学推导理解欧拉角与万向节死锁 目录 如何脱离数学推导理解欧拉角与万向节死锁 0.需要提前掌握的知识 1.死锁的本质-旋转面重合的成因 2.死锁出现将导致什么?-失控 3.旋转面逐渐慢慢走向重 ...

  3. 欧拉角与万向节死锁(图文版)

    万向节死锁(Gimbal Lock)问题 上文中曾经说过,欧拉旋转的顺规和轴向定义,自然造就了"万向节死锁"问题.本文主要来探索它自然形成的原因. 陀螺仪 首先,我们来了解Gimb ...

  4. Unity编程 欧拉角与万向节死锁(图文版)

    万向节死锁(Gimbal Lock)问题 上文中曾经说过,欧拉旋转的顺规和轴向定义,自然造就了"万向节死锁"问题.本文主要来探索它自然形成的原因. 陀螺仪 首先,我们来了解Gimb ...

  5. 【基础】Unity:欧拉角与万向节死锁(图文版)

    转自:http://blog.csdn.net/andrewfan/article/details/60981437 万向节死锁(Gimbal Lock)问题 上文中曾经说过,欧拉旋转的顺规和轴向定义 ...

  6. 欧拉角死锁_欧拉角与万向节死锁

    欧拉角万向节死锁的问题困扰了自己很久,一直跟飞机结合不起来.昨天看代码,遇到用飞机三个姿态角度构造四元数的问题,百思不得其解.早上坐地铁,重新想这个问题.不成想这个问题还没弄明白,倒是明白了欧拉角万向 ...

  7. 欧拉角与万向节死锁(Euler angle Gimbal Lock)

    欧拉角 欧拉角有三种: 俯仰:Pitch(绕y轴旋转) 偏航:Yaw(绕z轴旋转) 翻滚:Roll(绕x轴旋转) 万向节死锁 下面的动图为死锁的一种情况,旋转层级为z > y > x,当y ...

  8. 欧拉角表示以及万向节死锁

    欧拉角 主要介绍欧拉角的表示,欧拉角的旋转,欧拉角的优缺点,以及欧拉角的万向节死锁 1.欧拉角的表示 欧拉角是一种基于三种较简单旋转运动(称为俯仰.滚动和偏航)创建一般旋转的机制.如下图,一架沿x轴方 ...

  9. 欧拉角万向节死锁与四元数的相关资料

    欧拉角和四元数都可以用来描述物体的姿态.欧拉角的万向节死锁理解稍微奇怪.四元数原理的理解较为复杂.欧拉角和四元数之间可以做转换.这里收集了若干资料已做备忘. 万向节死锁(Gimbal Lock) : ...

最新文章

  1. beamer插入图片_beamer中暗背景插入图片
  2. 【错误记录】Flutter 界面报错 ( No MediaQuery widget ancestor found. | Scaffold widgets require a MediaQuery )
  3. 分享android开发过程中用到的一些开源框架
  4. Windows下使用静态库
  5. 4)机器学习基石笔记 Lecture4:Feasibility of Learning
  6. 论文浅尝 | WWW2022 - “知识提示”之知识约束预训练微调
  7. 世界第一台电脑_2020世界计算机大会今日开幕 给市民带来全方位观展体验 - 三湘万象 - 湖南在线...
  8. 计算机图形人机交互实验报告,用户界面设计人机交互实验报告.doc
  9. java浪漫代码_Elasticsearch,从一个浪漫的故事开始(原理篇)
  10. mysql ssh通道_详解如何通过SSH通道来访问MySQL
  11. pymysql连接数据库
  12. 吴江智慧城市产业化“航母”起航
  13. JAVA计算机毕业设计在线购书商城系统Mybatis+源码+数据库+lw文档+系统+调试部署
  14. Linux后台运行程序最实用的两种方式
  15. 怎样美化计算机的桌面图标,windows10图标美化怎么操作_win10电脑美化方法
  16. xp系统计算机怎么连接到网络打印机,windows xp系统如何连接不同网段共享打印机...
  17. TARA-Asset穷举
  18. 数学概念: 导数和切线方程
  19. swift php 类型判断,Swift 5.1 新特性:透明类型关键字 some
  20. 2022西藏最新特种工(施工升降机)模拟试题题库及答案

热门文章

  1. Coursera | Applied Data Science with Python 专项课程 | Applied Machine Learning in Python
  2. Java集合框架是什么?说出一些集合框架的优点?
  3. 牛客寒假算法基础集训营1 C. 小a与星际探索(dp或者各种姿势)
  4. Golang四舍五入保留两位小数
  5. 计算机基础及excel,S102-计算机基础(06)-EXCEL简介及基本操作
  6. STM32硬件I2C的一点心得(AT24C32C和AT24C64C)
  7. Discourse 论坛激活邮件问题
  8. osgi框架基础原理与实例一
  9. 在wps中实现二级联动
  10. Facade外观模式