转自:http://www.cppblog.com/heath/archive/2009/12/13/103127.html
在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旋转模型。
参考文献:
[1] http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
[2] Ken Shoemake, Animating Rotation with Quaternion Curves, 1985
分享到:
相关推荐
四元数转欧拉角matlab,四元数转欧拉角matlab,四元数转欧拉角matlab,
四元数与欧拉角以及矩阵之间的转换,把欧拉角转换成旋转矩阵,方便计算顶点变换。
MPU6050__四元数_欧拉角_程序
将四元数转换为欧拉角。 请注意,不同旋转顺序的欧拉角是不同的。 此代码中使用的欧拉角旋转顺序是 z-y'-x''(偏航、俯仰、滚转)。 旋转是固有的,即沿新轴旋转。 这个定义被航空航天工程师广泛使用。 参考: ...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
这个是OpenGL相关的矩阵类,其中实现了包括了平移矩阵、旋转矩阵、缩放矩阵等各种矩阵变换的实现以及欧拉角和四元数的相关转换。
ABB 机器人的欧拉角和四元数转化工具,运行于win7 32位以下, 不支持 64位
全角度欧拉角与四元数转换研究,对于四元数转换为欧拉角算法,普通的参考文献上都局限在 ±90° 内,或是俯仰角局限在内其它两角局限于内。本文利用前一时刻的角度信息对当前角度进行修正,成功地实现了 内的欧拉角...
旋转矩阵和四元数以及欧拉角之间的转换,相应公式推导过程
实现了四元数的基本运算和四元数与欧拉角之间的相互转换,并实现了四元数插值计算。
文档描述了,在东北天下的欧拉角,旋转矩阵,四元数,之间的转换关系,以及加速度计,磁力计的转换关系,有助于姿态解算时的推导。
所以,在飞行器控制系统仿真设计的时候,需要四元数与欧拉角之间的转换。给定1 个欧拉 角,对应1 个四元数,因而欧拉角到四元数之间这种一一对应的关系使得欧拉角到四元数的 转换比较容易。但是,1 个四元数通常有1 个...
这里详细的列出了12种转换方式下的方向余弦与四元数的转换,并且欧拉角的公式
这是矩阵欧拉角四元数两两之间的转换软件,只要输入其中一个,就可以转换其他两个,而且欧拉角还分弧度和度的形式,同时还有娱乐快捷键,学习娱乐两不误
讲述四元数和旋转矩阵之间相互转化的学术论文:首先介绍了四元数和旋转矩阵在实现向量旋转中的应用,在此基础上,根据游戏开发的实际需要,讨论了四元数和旋转矩阵之间的相互转化关系。最后,重点分析了由旋转矩阵到...
欧拉角转换四元数 公式是从网上搜索的,代码自己编写的,适用任意支持C的平台,原本是为了6轴融合模拟9轴效果用的。
1、旋转矩阵或四元数 到 欧拉角的方法. Utility::R2ypr和.eulerAngles(2,1,0)都可以,但是单位不同! (1)Utility::R2ypr(q_array[i – j].toRotationMatrix()) 输出的是:yaw pitch roll 的vector3d向量,单位是...
全角度欧拉角与四元数转换研究全角度欧拉角与四元数转换研究
代码!!!!重要!!!! 学习中关于机器人领域中四元数、欧拉角、旋转矩阵、旋转向量的相互转换关系总结,整理加深记忆。 每一个都有相互转换关系,并注释