四元数转欧拉角&欧拉角转四元数程序:四元数转欧拉角&欧拉角转四元数程序。

?
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执行

三、结果

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

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

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

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

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

  3. 旋转矩阵与欧拉角的相互转换及代码

    这篇博客将会分享旋转矩阵和欧拉角的相互转换. 三维旋转矩阵有三个自由度,旋转能够使用多种方法表示(旋转矩阵,欧拉角,四元数,轴角,李群与李代数),比如一个3x3的矩阵,比如四元数,甚至可以将旋转表示为 ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. HBase解决Region Server Compact过程占用大量网络出口带宽的问题
  2. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
  3. 洛谷P1280 caioj 1085 动态规划入门(非常规DP9:尼克的任务)
  4. 有关采用SMIv2 Internet协议的SNMPv2 MIB
  5. i2c- sda挂死分析
  6. python最大公约数和最小公倍数_python怎么求最大公约数和最小公倍数
  7. yelee主题博客四周变透明
  8. Servlet使用适配器模式进行增删改查案例(Dept.java)
  9. django模板系统(下)
  10. bzoj4602 [Sdoi2016]齿轮 边权并查集
  11. ChaiNext:比特币再度考验5W关口
  12. Android集成一个新产品时,lunch的product name和device name注意事项
  13. 简单记录 Part1.1
  14. 移动APP开发框架总结
  15. 在Java中通过线程池实现异步执行
  16. 小程序搜索页面搜索记录和热门搜索实现
  17. 网络变压器的介绍分类及工作原理
  18. 云计算和超级计算机一样吗,超级计算机有什么用途?超级计算机与云计算区别...
  19. 非211普通一本学生如何找IT名企实习?
  20. 蓝桥杯 嵌入式 STMG431RBT6 综合测试

热门文章

  1. jquery字符串转数组
  2. 解决.NET CF 3.5 Bitmap(Stream)未处理异常问题
  3. jquery 学习之二 属性---文本 值
  4. 【原】WPF 主界面布局中DockPanel的停靠与默认填充
  5. python中用于获取当前目录的是_python中获得当前目录和上级目录的实现方法
  6. Java黑皮书课后题第8章:8.9(井字游戏)玩家使用各自标志标记3*3网格中的某个空格,当一个玩家在网格的水平、垂直或对角线方向标记了三个相同的标记时,游戏结束,该玩家获胜。创建一个玩井字游戏的程序
  7. C语言学习之输出“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
  8. yota3墨水屏设置_使用ESP32驱动电子墨水屏
  9. c 将数字数组转成字符串_C+|用指针指向字符串字面量、字符数组及字符指针数组...
  10. 【2012百度之星 / 资格赛】I:地图的省钱计划