四元数和欧拉角的相互转换
四元数转欧拉角&欧拉角转四元数程序:四元数转欧拉角&欧拉角转四元数程序。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#include "stdafx.h"
#include "math.h"
#include<iostream>
#include<string.h>
using namespace std;
void EulerAnglesToQuaternion( double roll, double yaw, double pitch)
{
double cosRoll,sinRoll,cosPitch,sinPitch,cosyaw,sinyaw,qw,qx,qy,qz;
cosRoll = cosf(roll * 0 .5f); //z
sinRoll = sinf(roll * 0 .5f); //z
cosyaw= cosf(yaw * 0 .5f); //y
sinyaw = sinf(yaw * 0 .5f); //y
cosPitch = cosf(pitch * 0 .5f); //x
sinPitch = sinf(pitch * 0 .5f); //x
qw = cosRoll * cosyaw* cosPitch + sinRoll * sinyaw * sinPitch;
qx = cosRoll * sinyaw * cosPitch + sinRoll * cosyaw * sinPitch;
qy = cosRoll * cosyaw * sinPitch - sinRoll * sinyaw * cosPitch;
qz = sinRoll * cosyaw * cosPitch - cosRoll * sinyaw * sinPitch;
cout << "qw = " << qw << endl;
cout << "qx = " << qx << endl;
cout << "qy = " << qy << endl;
cout << "qz = " << qz << endl;
}
void QuaternionToEulerAngles( double qw, double qx, double qy, double qz)
{
double roll, yaw, pitch;
roll = atan2f( 2 .f * (qw*qz + qx*qy), 1 - 2 *(qz*qz+qx*qx)); //Z
yaw = asinf( 2 .f * (qw*qx - qy*qz)); //Y
pitch =atan2f( 2 .f * (qw*qy + qz*qx), 1 - 2 *(qy*qy+qx*qx)); //X
cout << "roll = " << roll << endl;
cout << "yaw = " << yaw << endl;
cout << "pitch = " << pitch << endl;
}
int main()
{
QuaternionToEulerAngles( 0 , 0.707106 , 0.707106 , 0 );
EulerAnglesToQuaternion( 1.5707 , 0 , 3.14159 );
return 0 ;
}</string.h></iostream>
|
二、Ctrl+F5执行
三、结果
四元数和欧拉角的相互转换相关推荐
- unity 四元数和欧拉角的相互转换
四元数和欧拉角相互转换 //四元数转化成欧拉角 Vector3 v3=transform.rotation.eulerAngles; //欧拉角转换成四元数 Quaternion rotation = ...
- unity中的四元数,欧拉角,方向向量之间的相互转换方法。
四元数: 到欧拉角:quaternion.eulerAngles 到方向向量:(quaternion * Vector3.forward).normalized 欧拉角: 到四元数:Quaternio ...
- 旋转矩阵与欧拉角的相互转换及代码
这篇博客将会分享旋转矩阵和欧拉角的相互转换. 三维旋转矩阵有三个自由度,旋转能够使用多种方法表示(旋转矩阵,欧拉角,四元数,轴角,李群与李代数),比如一个3x3的矩阵,比如四元数,甚至可以将旋转表示为 ...
- ROS中四元数、欧拉角、旋转矩阵等格式转换
未完- ROS接收到odometry格式消息: nav_msgs::Odometry pos_msg 具有: pos_msg.pose.pose.orientation.x; // xyzw pos_ ...
- eigen 编译_头条 | 使用eigen实现四元数、欧拉角、旋转矩阵、旋转向量间的转换...
点击上方蓝字,关注本公众号,获得更多资源上一篇文章介绍了四元数.欧拉角.旋转矩阵.轴角如何相互转换,本篇文章介绍如何用eigen来实现. 旋转向量 1,初始化旋转向量:旋转角为alpha,旋转轴为(x ...
- 四元数,欧拉角,旋转矩阵相互转换
#include <TransForms3d/TransForms.h>/*---------------------------------------角度弧度转换----------- ...
- 【飞控理论】【惯性导航基础】二维平面的旋转如何用代数表示?三维平面的旋转如何用代数表示?什么是四元数?四元数、欧拉角、方向余弦之间有什么关系?
上一篇欧拉角 由于欧拉角在描述三维空间物体旋转问题时存在万向节死锁问题(详情戳这里),所以引入四元数概念. 目录 1.二维平面的旋转 2.三维平面的旋转(什么是四元数) 3.<捷联惯性导航> ...
- Matlab ——旋转矩阵,四元数,欧拉角之间的转换
最近要用这方面的东西,整理,记录,分享一下 基于Matlab现有函数下的内容 Matlab --旋转矩阵,四元数,欧拉角之间的转换 旋转矩阵 dcm R 四元数 quat q = [q0 q1 q2 ...
- 【Unity3D 灵巧小知识点】☀️ | Unity 四元数、欧拉角 与 方向向量 之间转换
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...
最新文章
- HBase解决Region Server Compact过程占用大量网络出口带宽的问题
- java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
- 洛谷P1280 caioj 1085 动态规划入门(非常规DP9:尼克的任务)
- 有关采用SMIv2 Internet协议的SNMPv2 MIB
- i2c- sda挂死分析
- python最大公约数和最小公倍数_python怎么求最大公约数和最小公倍数
- yelee主题博客四周变透明
- Servlet使用适配器模式进行增删改查案例(Dept.java)
- django模板系统(下)
- bzoj4602 [Sdoi2016]齿轮 边权并查集
- ChaiNext:比特币再度考验5W关口
- Android集成一个新产品时,lunch的product name和device name注意事项
- 简单记录 Part1.1
- 移动APP开发框架总结
- 在Java中通过线程池实现异步执行
- 小程序搜索页面搜索记录和热门搜索实现
- 网络变压器的介绍分类及工作原理
- 云计算和超级计算机一样吗,超级计算机有什么用途?超级计算机与云计算区别...
- 非211普通一本学生如何找IT名企实习?
- 蓝桥杯 嵌入式 STMG431RBT6 综合测试
热门文章
- jquery字符串转数组
- 解决.NET CF 3.5 Bitmap(Stream)未处理异常问题
- jquery 学习之二 属性---文本 值
- 【原】WPF 主界面布局中DockPanel的停靠与默认填充
- python中用于获取当前目录的是_python中获得当前目录和上级目录的实现方法
- Java黑皮书课后题第8章:8.9(井字游戏)玩家使用各自标志标记3*3网格中的某个空格,当一个玩家在网格的水平、垂直或对角线方向标记了三个相同的标记时,游戏结束,该玩家获胜。创建一个玩井字游戏的程序
- C语言学习之输出“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
- yota3墨水屏设置_使用ESP32驱动电子墨水屏
- c 将数字数组转成字符串_C+|用指针指向字符串字面量、字符数组及字符指针数组...
- 【2012百度之星 / 资格赛】I:地图的省钱计划