四元素与欧拉角之间的转换
转自: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
四元素与欧拉角之间的转换相关推荐
- 旋转矩阵与欧拉角之间的转换
简 介: 对于欧拉角与旋转矩阵之间的转换公式和程序实现进行了测试.也显示了这其中的转换关系的复杂性,来自于欧拉角的方向.范围.转换顺序.这在实际应用中需要特别的关注. 关键词: 欧拉角,旋转矩阵 #m ...
- matlab和Eigen库中的一些旋转矩阵(方向余弦矩阵)、四元数和欧拉角之间的转换和绘图的注意事项
最近用matlab和Eigen库中的一些旋转矩阵(方向余弦矩阵).四元数和欧拉角之间的转换和绘图,弄得我有些头疼,把遇到的问题记录一下,以防以后又脑阔疼....有不同的理解可以再评论区批评指正- 主要 ...
- Matlab ——旋转矩阵,四元数,欧拉角之间的转换
最近要用这方面的东西,整理,记录,分享一下 基于Matlab现有函数下的内容 Matlab --旋转矩阵,四元数,欧拉角之间的转换 旋转矩阵 dcm R 四元数 quat q = [q0 q1 q2 ...
- 四字节与浮点数之间的转换(c语言实现)
C语言中对于float类型的数据,主要使用4字节进行存储,以下为干货.实现四字节与浮点数之间的转换. 0.头文件添加 #include <math.h> 1.浮点数转换为四字节 void ...
- 罗德里格斯公式推导(轴角与旋转矩阵的关系)以及四元数与旋转向量、旋转矩阵、欧拉角之间的转换关系
罗德里格斯公式推导(轴角与旋转矩阵的关系) 意义:罗德里格斯公式表示旋转向量到旋转矩阵之间爱你的转换关系 旋转向量:一个向量,方向与旋转轴一致,长度等于旋转角度 空间中任意旋转都可以用一个旋转轴和一个 ...
- 四元素定义、运算、插值、与欧拉角之间的转换
在3D图形学中,最常用的旋转表示方法便是四元数和欧拉角,比起矩阵来具有节省存储空间和方便插值的优点.本文主要归纳了两种表达方式的转换,计算公式采用3D笛卡尔坐标系: 定义..分别为绕Z轴.Y轴.X轴的 ...
- 手眼标定(python、realsense、jaka);四元素、欧拉角、旋转矢量到旋转矩阵转换
一.相机到机械臂末端位姿自动标定 机械臂和realsense初始化: import jkrc import math import time import pyrealsense2 as rs imp ...
- 四元素、欧拉角及旋转矩阵之间的转换
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zhuoyueljl/article/details/70789472 查看全文 http://www ...
- matlab 罗德里格 公式,旋转矩阵,四元素,欧拉角
旋转变换 旋转变换最为直观的表示方法是"轴-角":绕着某一个过原点轴,旋转某一角度. 轴可以用一个单位长度的点[w1,w2,w3][w1,w2,w3]表示:原点到该点的射线即为此轴 ...
- php字符串怎么传到html_php字符串函数(四):html与字符串之间的转换
* 1.addslashes($str):为了数据库查询语句等的需要在某些字符前加上了反斜线:单引号,双引号,反斜线,建议使用DBMS自带的:mysqli_real_escape_string() * ...
最新文章
- Spring复习笔记:3
- 移动互联网的机会-从零创业,半年净赚50万?
- java excel读取操作,Java读取Excel并操作
- 【Java Web】Myeclipse下运用maven管理项目jar包
- 从产品展示页面谈谈Hybris系列之三:Hybris Service层介绍
- Linux对包管理阐述
- 论文浅尝 - CVPR2020 | 基于网格特征的可视问答系统
- 【数据库系统】Web查找和数据库查询的区别
- 外媒:欧盟针对谷歌语音助手展开反垄断调查
- 灵感分享| 实例UI组件的设计风格
- 刚装的系统没有sql server(mssqlserver)_数据库与SQL学习
- 蚂蚁金服 TRaaS 技术风险防控平台解密
- sqoop各类命令示范
- 两部门:解除蒙古国部分地区口蹄疫疫情禁令
- MySQL变量/参数的查看与设置
- 1.shell脚本编程——基础篇(一)
- unity设置手机横屏方法和相关问题
- 常用adb命令学习:查看和修改设备的输入法
- openwrt定时任务 2021-10-08
- java 自动创建html网页超链接
热门文章
- Java中的HashCode 1 之hash算法基本原理
- js里用append()和appendChild有什么区别?
- python del 函数
- 【matlab】在图中插入矩形(框or阴影)
- 解决清除浮动的最佳办法
- Ubuntu12.04中安装ns-allinone-2.34
- Flex中如何通过设置GridLines对象的horizontalAlternateFill样式交错显示LineSeries图表背景颜色的例子...
- @using (Html.BeginForm())参数示例
- markdown编辑器------------编辑方法
- WinForm(C#):登录页面实现+SQL Server数据库连接方式