转自:四元数与欧拉角之间的转换
在3D图形学中,最常用的旋转表示方法便是四元数和欧拉角,比起矩阵来具有节省存储空间和方便插值的优点。本文主要归纳了两种表达方式的转换,计算公式采用3D笛卡尔坐标系:

图1 3D Cartesian coordinate System (from wikipedia)–笛卡尔坐标系(来自维基百科)
定义分别为绕Z轴、Y轴、X轴的旋转角度,如果用Tait-Bryan angle表示,分别为Yaw、Pitch、Roll。

图2 Tait-Bryan angles (from wikipedia)—泰特布莱恩角度
一、四元数的定义

通过旋转轴和绕该轴旋转的角度可以构造一个四元数:

其中是绕旋转轴旋转的角度,为旋转轴在x,y,z方向的分量(由此确定了旋转轴)
二、欧拉角到四元数的转换

三、四元数到欧拉角的转换

arctan和arcsin的结果是这并不能覆盖所有朝向(对于的取值范围已经满足),因此需要用atan2来代替arctan。

四、在其他坐标系下使用
在其他坐标系下,需根据坐标轴的定义,调整一下以上公式。如在Direct3D中,笛卡尔坐标系的X轴变为Z轴,Y轴变为X轴,Z轴变为Y轴(无需考虑方向)。


五、示例代码
http://www.cppblog.com/Files/heath/Euler2Quaternion.rar
Demo渲染两个模型,左边使用欧拉角,右边使用四元数,方向键Up、Left、Right旋转模型。


参考:https://www.cnblogs.com/21207-iHome/p/6894128.html

四元数与欧拉角相互转换相关推荐

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

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

  2. 一文详解四元数、欧拉角、旋转矩阵、轴角如何相互转换

    一文详解四元数.欧拉角.旋转矩阵.轴角如何相互转换 简介 欧拉角与旋转矩阵 欧拉角---->旋转矩阵 旋转矩阵---->欧拉角 四元数与旋转矩阵 四元数---->旋转矩阵 旋转矩阵- ...

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

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

  4. 四元数欧拉角相互转换与奇异值问题

    四元数转欧拉角 四元数转欧拉角 四元数转欧拉角的奇异值问题 四元数转欧拉角 参考文章:四元数和欧拉角的相互转换 四元数转欧拉角的奇异值问题 在四元数转欧拉角时遇到奇异值问题,可参考四元数和欧拉角的相互 ...

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

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

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

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

  7. 刚体在三维空间的旋转(关于旋转矩阵、DCM、旋转向量、四元数、欧拉角)

    最近学习了一些关于三维空间旋转相关的知识,借此梳理一下备忘. 三维空间的旋转(3D Rotation)是一个很神奇的东东:如果对某个刚体在三维空间进行任意次的旋转,只要旋转中心保持不变,无论多少次的旋 ...

  8. 在matlab和python if中的旋转变换(四元数、欧拉角、旋转矩阵)等

    在matlab和python tf中的旋转变换(四元数.欧拉角.旋转矩阵等) 目录 1. 基本的认识 2. 变换矩阵 3. 欧拉角 4. 四元数 5. matlab中相互转换 6. python tf ...

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

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

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

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

最新文章

  1. 一堆棋子java代码编程_网易2018校招内推编程题-堆棋子-C++实现
  2. 把运维和开发放一起就是DevOps?还差得远!
  3. Linux C函数库参考手册
  4. html导入错误 wordpress,纯代码为WordPress压缩前端html代码 附BUG修复
  5. SQL语句执行顺序以及oracle基本查询优化
  6. 深入理解Kafka(2)-Producer
  7. JavaScript字符串操作方法大全,包含ES6方法 1
  8. 英语----专业单词
  9. 大学计算机基础知识判断题,大学计算机基础学习知识判断题.doc
  10. flex接收java返回集合,前台的的flex对Java返回list类型的处理
  11. Android 面试那些事儿
  12. c语言常用代码-1:
  13. 3DSmax里的nurms toggle命令中文版是什么意思
  14. Android系统预装Chrome并自定义主页
  15. Windows11硬盘读写速度变慢的解决方法
  16. Linux和windows导入scv数据文件
  17. 给win8、win10系统添加自定义右键菜单项目
  18. geany配置python_Geany配置python教程解析
  19. Choco-slover的使用
  20. Git 使用juju

热门文章

  1. 干货 | 挖掘旅游热点吸引年轻人,携程自动热点投放系统的背后玩法
  2. Java基础知识面试题(2021年最新版,持续更新...)整理
  3. c语言中局部变量存放在哪里,C语言全局变量存放在哪里?
  4. Bean的六种作用域
  5. 如何进入oppo云服务器,OPPO云服务(查找手机)
  6. 大数据Hadoop之——数据同步工具DataX
  7. 延安大学计算机学院评分,延安大学计算机学院.docx
  8. c++实现串口功能之termios.h头文件研读<二>
  9. go-fastDFS 分布式文件系统搭建(实现梳理)
  10. access数据库代做_矿井三维模型(代做矿山模型)