3D数学基础——欧拉角与万向节死锁
欧拉角
欧拉角可以看做一个坐标,此坐标都是相对于同一个初始状态即(0,0,0)即物体坐标系和世界坐标系重合,且三角度都是0,从此初试状态开始,按照定义的旋转顺序,按照静态或动态的方式,旋转指定的角度,从而得到最终的状态。
1.欧拉角给出旋转角度的同时也要给出旋转顺序,顺序不同结果也不同
2.根据旋转选择的坐标系,可以分为静态和动态:
a. 静态:即绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态。
b. 动态:即绕物体坐标系三个轴的旋转,由于物体旋转过程中坐标轴随着物体做相同的转动,所以称为动态。使用动态欧拉角会出现万向锁现象;静态欧拉角不存在万向锁的问题。
俯仰角 pitch
航向角 yaw
滚转角 Roll
对于坐标系E下的欧拉角(α,β,r),三个绕轴旋转的旋转矩阵绕的是什么坐标系下的轴?和以下哪个旋转矩阵是等价的?
- 绕坐标系E下的x轴旋转α,绕坐标系E下的y轴旋转β,绕坐标系E下的z轴旋转r,三个矩阵的复合
- 绕坐标系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数学基础——欧拉角与万向节死锁相关推荐
- 欧拉角、万向节死锁理解
欧拉角.万向节死锁理解 欧拉角理解 举例讲解 顺规.内旋与外旋 顺规 内旋与外旋 总结 东北天坐标系 数学表示 公式推导 举例计算 万向节死锁理解 说明 形象表示 数学表示 欧拉角理解 举例讲解 欧拉 ...
- 如何脱离数学推导理解欧拉角与万向节死锁
如何脱离数学推导理解欧拉角与万向节死锁 目录 如何脱离数学推导理解欧拉角与万向节死锁 0.需要提前掌握的知识 1.死锁的本质-旋转面重合的成因 2.死锁出现将导致什么?-失控 3.旋转面逐渐慢慢走向重 ...
- 欧拉角与万向节死锁(图文版)
万向节死锁(Gimbal Lock)问题 上文中曾经说过,欧拉旋转的顺规和轴向定义,自然造就了"万向节死锁"问题.本文主要来探索它自然形成的原因. 陀螺仪 首先,我们来了解Gimb ...
- Unity编程 欧拉角与万向节死锁(图文版)
万向节死锁(Gimbal Lock)问题 上文中曾经说过,欧拉旋转的顺规和轴向定义,自然造就了"万向节死锁"问题.本文主要来探索它自然形成的原因. 陀螺仪 首先,我们来了解Gimb ...
- 【基础】Unity:欧拉角与万向节死锁(图文版)
转自:http://blog.csdn.net/andrewfan/article/details/60981437 万向节死锁(Gimbal Lock)问题 上文中曾经说过,欧拉旋转的顺规和轴向定义 ...
- 欧拉角死锁_欧拉角与万向节死锁
欧拉角万向节死锁的问题困扰了自己很久,一直跟飞机结合不起来.昨天看代码,遇到用飞机三个姿态角度构造四元数的问题,百思不得其解.早上坐地铁,重新想这个问题.不成想这个问题还没弄明白,倒是明白了欧拉角万向 ...
- 欧拉角与万向节死锁(Euler angle Gimbal Lock)
欧拉角 欧拉角有三种: 俯仰:Pitch(绕y轴旋转) 偏航:Yaw(绕z轴旋转) 翻滚:Roll(绕x轴旋转) 万向节死锁 下面的动图为死锁的一种情况,旋转层级为z > y > x,当y ...
- 欧拉角表示以及万向节死锁
欧拉角 主要介绍欧拉角的表示,欧拉角的旋转,欧拉角的优缺点,以及欧拉角的万向节死锁 1.欧拉角的表示 欧拉角是一种基于三种较简单旋转运动(称为俯仰.滚动和偏航)创建一般旋转的机制.如下图,一架沿x轴方 ...
- 欧拉角万向节死锁与四元数的相关资料
欧拉角和四元数都可以用来描述物体的姿态.欧拉角的万向节死锁理解稍微奇怪.四元数原理的理解较为复杂.欧拉角和四元数之间可以做转换.这里收集了若干资料已做备忘. 万向节死锁(Gimbal Lock) : ...
最新文章
- beamer插入图片_beamer中暗背景插入图片
- 【错误记录】Flutter 界面报错 ( No MediaQuery widget ancestor found. | Scaffold widgets require a MediaQuery )
- 分享android开发过程中用到的一些开源框架
- Windows下使用静态库
- 4)机器学习基石笔记 Lecture4:Feasibility of Learning
- 论文浅尝 | WWW2022 - “知识提示”之知识约束预训练微调
- 世界第一台电脑_2020世界计算机大会今日开幕 给市民带来全方位观展体验 - 三湘万象 - 湖南在线...
- 计算机图形人机交互实验报告,用户界面设计人机交互实验报告.doc
- java浪漫代码_Elasticsearch,从一个浪漫的故事开始(原理篇)
- mysql ssh通道_详解如何通过SSH通道来访问MySQL
- pymysql连接数据库
- 吴江智慧城市产业化“航母”起航
- JAVA计算机毕业设计在线购书商城系统Mybatis+源码+数据库+lw文档+系统+调试部署
- Linux后台运行程序最实用的两种方式
- 怎样美化计算机的桌面图标,windows10图标美化怎么操作_win10电脑美化方法
- xp系统计算机怎么连接到网络打印机,windows xp系统如何连接不同网段共享打印机...
- TARA-Asset穷举
- 数学概念: 导数和切线方程
- swift php 类型判断,Swift 5.1 新特性:透明类型关键字 some
- 2022西藏最新特种工(施工升降机)模拟试题题库及答案
热门文章
- Coursera | Applied Data Science with Python 专项课程 | Applied Machine Learning in Python
- Java集合框架是什么?说出一些集合框架的优点?
- 牛客寒假算法基础集训营1 C. 小a与星际探索(dp或者各种姿势)
- Golang四舍五入保留两位小数
- 计算机基础及excel,S102-计算机基础(06)-EXCEL简介及基本操作
- STM32硬件I2C的一点心得(AT24C32C和AT24C64C)
- Discourse 论坛激活邮件问题
- osgi框架基础原理与实例一
- 在wps中实现二级联动
- Facade外观模式