欧拉旋转

优点:

很容易理解,形象直观;表示更方便,只需要3个值(分别对应x、y、z轴的旋转角度);但按我的理解,它还是转换到了3个3*3的矩阵做变换,效率不如四元数;

缺点:

之前提到过这种方法是要按照一个固定的坐标轴的顺序旋转的,因此不同的顺序会造成不同的结果;

会造成万向节锁(Gimbal Lock)的现象。这种现象的发生就是由于上述固定坐标轴旋转顺序造成的。理论上,欧拉旋转可以靠这种顺序让一个物体指到任何一个想要的方向,但如果在旋转中不幸让某些坐标轴重合了就会发生万向         节锁,这时就会丢失一个方向上的旋转能力,也就是说在这种状态下我们无论怎么旋转(当然还是要原先的顺序)都不可能得到某些想要的旋转效果,除非我们打破原先的旋转顺序或者同时旋转3个坐标轴。这里有个视频可以直观的理解下;

由于万向节锁的存在,欧拉旋转无法实现球面平滑插值;

四元数旋转

Quaternion.Euler(transform.eulerAngles+Aisx))

Quaternion.eulerAngles(transform.eulerAngles+Aisx))

两个都可以,只是上面版本比较高,后面这个适用于低版本。

transform.rotation = Quaternion.AngleAxis(degrees, transform.right) * transform.rotation;

优点:

可以避免万向节锁现象;

只需要一个4维的四元数就可以执行绕任意过原点的向量的旋转,方便快捷,在某些实现下比旋转矩阵效率更高;

可以提供平滑插值;

缺点:

比欧拉旋转稍微复杂了一点点,因为多了一个维度;

理解更困难,不直观;

万向节锁

其实就是一个物体在一个3D世界里面随着旋转顺序和旋转角度的改变,导致物体只能在一个固定的平面旋转,无法旋转到你预想的角度。. 由于物体的旋转,物体的坐标轴方向也发生了改变,导致其中2条坐标轴发生了 重合 。

四元数和欧拉角优缺点相关推荐

  1. 四元数和欧拉角的相互转换

    四元数转欧拉角&欧拉角转四元数程序:四元数转欧拉角&欧拉角转四元数程序. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...

  2. eigen 编译_头条 | 使用eigen实现四元数、欧拉角、旋转矩阵、旋转向量间的转换...

    点击上方蓝字,关注本公众号,获得更多资源上一篇文章介绍了四元数.欧拉角.旋转矩阵.轴角如何相互转换,本篇文章介绍如何用eigen来实现. 旋转向量 1,初始化旋转向量:旋转角为alpha,旋转轴为(x ...

  3. 四元数,欧拉角,旋转矩阵相互转换

    #include <TransForms3d/TransForms.h>/*---------------------------------------角度弧度转换----------- ...

  4. 【飞控理论】【惯性导航基础】二维平面的旋转如何用代数表示?三维平面的旋转如何用代数表示?什么是四元数?四元数、欧拉角、方向余弦之间有什么关系?

    上一篇欧拉角 由于欧拉角在描述三维空间物体旋转问题时存在万向节死锁问题(详情戳这里),所以引入四元数概念. 目录 1.二维平面的旋转 2.三维平面的旋转(什么是四元数) 3.<捷联惯性导航> ...

  5. Matlab ——旋转矩阵,四元数,欧拉角之间的转换

    最近要用这方面的东西,整理,记录,分享一下 基于Matlab现有函数下的内容 Matlab --旋转矩阵,四元数,欧拉角之间的转换 旋转矩阵 dcm R 四元数 quat q = [q0 q1 q2 ...

  6. unity中的四元数,欧拉角,方向向量之间的相互转换方法。

    四元数: 到欧拉角:quaternion.eulerAngles 到方向向量:(quaternion * Vector3.forward).normalized 欧拉角: 到四元数:Quaternio ...

  7. unity 四元数和欧拉角的相互转换

    四元数和欧拉角相互转换 //四元数转化成欧拉角 Vector3 v3=transform.rotation.eulerAngles; //欧拉角转换成四元数 Quaternion rotation = ...

  8. 【Unity3D 灵巧小知识点】☀️ | Unity 四元数、欧拉角 与 方向向量 之间转换

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  9. ROS中四元数、欧拉角、旋转矩阵等格式转换

    未完- ROS接收到odometry格式消息: nav_msgs::Odometry pos_msg 具有: pos_msg.pose.pose.orientation.x; // xyzw pos_ ...

最新文章

  1. 土木工程计算机仿真学科未来前景,土木工程的发展现状与未来发展趋势
  2. EasyUi 改变 selelct 的 下拉内容 div 的高度
  3. 如何使用Visual Studio 2010(VS2010)编译C语言
  4. gifcam录制动态图后导入photoshop出现透明格子怎么办?
  5. php 5w的并发需要多少台服务器_php使用异步编程是怎样的?
  6. Java7运行applet_Java applet不会在JRE7下运行,控制台中不会显示错误
  7. 设置searchDisplayController的searchResultsTableView的UITableViewStyle为grouped
  8. IntelliJ IDEA 2017.1 EAP与异步堆栈跟踪调试器扩展
  9. 中国人上淘宝喜欢干啥 你知道吗?
  10. 参加东方道迩2010用户大会的归来总结
  11. 利用CSS3的transform做的动态时钟
  12. 【软件教程】Spring Tool Suite(STS)
  13. 优化python中os模块遍历文件夹时的排序问题
  14. 在线密码破解medusa
  15. 0x00000....蓝屏
  16. mybatis-plus环境搭建
  17. Undefined/Null/Boolean数据类型
  18. 移动光猫怎么设置虚拟服务器设置,移动光猫自带无线和拨号功能,光猫与路由器如何设置网络才最优?...
  19. supermap 数据转为shp
  20. pinpoint2.3.3安装和部署

热门文章

  1. Generation-A
  2. 修复MBR的工具MBRFix下载
  3. android 6.0 开机自启管理,Android App 如何做到开机自启动
  4. Hikvison对接iSecure Center时获取Appkey和Secert、不显示API网关、预览时提示网络请求失败
  5. [528]attrib隐藏文件夹
  6. qt QString数值转换格式化不足补0 QString十进制转换不足补0
  7. 网狐U3D客户端登陆大联盟服务器成功无法进入大厅解决
  8. Win8/Win7双系统安装超详尽图文教程——NT6 HDD Installer
  9. jca.jar_JCA 1.5,第1部分,优化和生命周期管理
  10. CIFAR10图像识别