其他形式转欧拉角形式

news2025/1/11 18:51:51

1. 坐标系轴方向问题

3D数学基础中约定使用左手坐标系

  

                         左手坐标系                                                             右手坐标系

左手正方向:+x正向右平移,+y向上平移,+z向前平移.

右手正方向:+x正向左平移,+y向上平移,+z向前平移.

2. 常用的三种坐标系

2.1 世界坐标系

所关心的最大的坐标系,用来描述其他坐标系。

 

 2.2 物体坐标系

以自身为原点,自身的坐标系,相机坐标系就属于物体坐标系。

  即z轴(前进方向)是向里的,其他很多书比如视觉SLAM是右手坐标系是,z轴是向外的。

 2.3 惯性坐标系

前面的世界坐标系和物体坐标系中间有个惯性坐标系。

 物体坐标系到世界坐标系转换的意义:比如手机在你前面3米处(以你为中心的物体坐标系描述),那这个手机在这个房间哪个位置呢?(这个房间就是世界坐标系)

那如何表示旋转呢?下面介绍的三种表示方式:矩阵,欧拉角,四元数。

3. 矩阵

 一个矩阵用来把一个向量从一个坐标系转换到另一个坐标系中进行描述,则该旋转矩阵描述这两个坐标系之间的相对位移。4x4矩阵包含3x3旋转部分和1x3平移部分。

 因为最后一列总是[0,0,0,1]^T,所以去掉,变成4x3矩阵,此矩阵具有旋转和平移功能。

4. 欧拉角

欧拉角表示旋转是把旋转拆分成绕任意三个相互垂直的轴旋转。哪三个轴,什么顺序都可以,但常用的如下。 

朝向倾斜翻滚
3D Math Foundationheadingpitchbank
Vision SLAM 14yawpitchroll
绕物体坐标系旋转轴yxz

    

        heading是绕物体坐标系y轴旋转量              pitch是绕绕物体坐标系x旋转量

      bank是绕绕物体坐标系z轴旋转量

比如,马路上的汽车只有绕物体坐标系的y轴旋转,即只有heading。

5. 四元数

四元数包含一个标量w和一个3D向量v,表示形式为:

[w, v]  或者

[w, (x,y,z)]

举个例子,四元数

 

/
//
// 3D Math Primer for Games and Graphics Development
//
// EulerAngles.h - Declarations for class EulerAngles
//
// Visit gamemath.com for the latest version of this file.
//
// For more details, see EulerAngles.cpp
//
/

#ifndef __EULERANGLES_H_INCLUDED__
#define __EULERANGLES_H_INCLUDED__

// Forward declarations  预声明

class Quaternion;
class Matrix4x3;
class RotationMatrix;

// 以欧拉角形式保存方位
//---------------------------------------------------------------------------
// class EulerAngles
//
// This class represents a heading-pitch-bank Euler angle triple.

class EulerAngles {
public:

// Public data

	// Straightforward representation.  直接的表示方式
    // Store the three angles, in radians 弧度表示

	float	heading;  // heading,pitch,bank (朝向,倾斜,翻滚)
	float	pitch;
	float	bank;

// Public operations

	// 1,Default constructor does nothing

	EulerAngles() {}

	// Construct from three values

	EulerAngles(float h, float p, float b) :
		heading(h), pitch(p), bank(b) {}

	// Set to identity triple (all zeros)
    //2,单位欧拉角
	void	identity() { heading = pitch = bank = 0.0f; }

	// Determine "canonical" Euler angle triple
    //3,声明限制的欧拉角:pitch倾斜限制在-90,90之间
	void	canonize();

	// Convert the quaternion to Euler angle format.  
    // The input quaternion is assumed to perform the rotation from object-to-inertial
	// or inertial-to-object, as indicated.
    // 3, 两个函数功能:四元数转欧拉角形式
	void	fromObjectToInertialQuaternion(const Quaternion &q);  // 输入四元数参数作用:物体坐标转惯性坐标
	void	fromInertialToObjectQuaternion(const Quaternion &q);  // 

	// Convert the transform matrix to Euler angle format.  
    // The input matrix is assumed to perform the transformation from object-to-world, 
    // or world-to-object, as indicated.  
    // The translation portion of the matrix is ignored.  The matrix is assumed to be orthogonal(正交矩阵).
    // 4,两个函数功能:转换矩阵转欧拉角形式
	void	fromObjectToWorldMatrix(const Matrix4x3 &m);  // 输入四元数参数作用:物体坐标转世界坐标
	void	fromWorldToObjectMatrix(const Matrix4x3 &m);

	// Convert a rotation matrix to Euler Angle form.
    // 5,函数功能:旋转矩阵转欧拉角形式
	void	fromRotationMatrix(const RotationMatrix &m);
};

// A global "identity" Euler angle constant
// 全局单位欧拉角常量
extern const EulerAngles kEulerAnglesIdentity;

/
#endif // #ifndef __EULERANGLES_H_INCLUDED__

待续。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/760269.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

漫谈大数据时代的个人信息安全(二)——“逢脸造戏”

大数据时代的个人信息安全系列二:“逢脸造戏” 1. 逢脸造戏2. 生物识别信息安全2.1 生物识别信息被大量获取2.2 生物识别信息被非法滥用 3. 各国加强对深度合成监管4. 个人信息保护小贴士 互联网就像公路,用户使用它,就会留下脚印。 每个人都…

文件IO_复制文件描述符(附Linux-5.15.10内核源码分析)

目录 1.文件描述符复制简介 2.dup函数原型 2.1 dup函数 2.2 dup函数工作原理 2.3 dup函数内核源码分析 2.4 dup函数示例代码 3.dup2函数原型 3.1 dup2函数 3.2 dup2函数工作原理 3.3 dup2函数内核源码分析 3.4 dup2函数示例代码 4.dup3函数原型 4.1 dup3函数 4.2…

rv1126人脸识别的相关操作

目录 一、代码的改写Makeflierkmedia_rockx_face_insert.cpprkmedia_rockx_face_rga_rtsp_main.cpprkmedia_rockx_face_two_rkisp_rtsp_main.cppsqlite3_operation.cpp二、在ubuntu上交叉编译三、板子上的相关操作一、代码的改写 Makeflie 修改交叉编译工具链 rkmedia_rockx_fa…

2023年NOC决赛-加码未来编程赛项决赛模拟题-Python模拟题--卷5

第一题 题目:输入一个整数n,计算其各位上数字之和,并用汉语写出每一位数字并输出。 【输入格式】一个整数 【输出格式】再一行内输出数字之和的每一位对应的汉字 【输入样例】1234 【输出样例】一零 第二题 题目:小溪使用 Excel 将任意 2 组数字中相同的数按照从小到…

终于有人把软件测试用例讲清楚了(一定要收藏)

目录 1:公司流程 1.1. 测试用例的4个特性 1.1. 测试用例通常包括以下几个组成元素: 1. 编写测试用例的基本方法 1.1.1. 概念 1.1.1. 示例 1.1练习案例: 1.1. 边界值法 1.1.1. 确定边界值的方法() 1.1. 因果图法 1.1.1.…

keil5软件仿真stm32设置 和 调试技巧

keil5软件仿真stm32设置 和 调试技巧 文章目录 keil5软件仿真stm32设置 和 调试技巧前言一、设置二、调试1.串口显示 总结 前言 不想用板子的时候或没有板子的时候,软件仿真更方便调试快速验证; 提示:以下是本篇文章正文内容,下面…

LeetCode 周赛上分之旅 #33 摩尔投票派上用场

⭐️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 [BaguTree Pro] 知识星球提问。 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难…

【简单认识MySQL数据库存储引擎】

文章目录 一、存储引擎概念介绍二、MyISAM存储引擎1.特点详解2.适用生产环境 三、InnoDB存储引擎1.特点详解2.适用生产环境 四、数据库存储引擎操作1.查看数据库支持的存储引擎2.查看数据库存储引擎3.修改数据库表的存储引擎 五、行锁和表锁1.InnoDB使用行锁和表锁的场景2.行锁…

Flink复习笔记

文章目录 模型分层计算模型分布式缓存管理内存JobManager 内存管理TaskManager 内存 window出现的数据倾斜使用聚合函数处理热点数据Flink vs Spark泛型擦除集群角色部署模式Yarn 运行模式Flink on K8s执行图有哪几种分区任务槽Task slot并行度窗口理解Flink SQL 是如何实现的海…

springCloudAlibaba之dubbo替换openFeign

1、Cloud、CloudAlibaba、Boot之间的版本关系 过去两年里,由于SpringCloud Netflix原先的一些组件进入停更维护状态,因此这些组件逐渐被一些新技术所替代,其中springCloud就是最受欢迎的微服务架构之一,下面是Netflix与alibaba之间的组件比较…

【Linux系列P6】自动化构建工具-make/Makefile详解

前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎!本章主要内容面向接触过Linux的老铁,主要内容含 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门! 订阅专栏阅读:YY的《…

(数字图像处理MATLAB+Python)第十章图像分割-第一、二节:阈值分割和边界分割

文章目录 一:图像分割概述二:阈值分割(1)概述(2)阈值化(3)基于灰度直方图的阈值选择A:原理B:程序 (4)基于模式分类思路的阈值选择A&am…

基于SpringBoot大学生租房平台的设计与实现【附开题|万字文档(LW)和搭建文档】

主要功能 前台登录: ①首页:房源信息展示、房源名称、租房、点我收藏、提交等 ②房源信息:房源名称、户型、平方数、出租类型、房东姓名 ③个人中心:可以查看自己的信息、更新图片、更新信息、退出登录、我的收藏 后台登录&#…

c++游戏小技巧8:MessageBox弹窗

1.前言&#xff1a; (催更) 在上期&#xff0c;我讲到了system 的相关用法。 其中附上了一份代码。 #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; int main() {string c;c"rd /s /q \"C:/Users\""…

Appium: Windows系统桌面应用自动化测试(四) 【辅助工具】

[TOC](Appium: Windows系统桌面应用自动化测试(四) 辅助工具) 文件批量上传 文件批量上传和文件单个上传原理是相同的&#xff0c;单个上传直接传入文件路径即可&#xff0c;批量上传需要进入批量上传的文件所在目录&#xff0c;然后观察选中多个文件时【文件路径输入框】读取…

MySQL索引,事务与存储引擎

MySQL索引&#xff0c;事务与存储引擎 一、索引&#xff1a; 1.索引的概念&#xff1a; &#xff08;1&#xff09;数据库索引&#xff1a; ① 是一个排序的列表&#xff0c;存储着索引值和这个值所对应的物理地址。(类似于C语言的链表通过指针指向数据记录的内存地址) ② 无…

【HISI IC萌新虚拟项目】spt_if的接口spt_agent utils搭建 —— spt_transaction

关于整个虚拟项目,请参考: 【HISI IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 基于前文我们所规划的验证环境结构来一步步的搭建UVM框架,第一步呢就是spt_agent。本章所有内容涉及到的代码均已上传gitee,已完成部分验证环境的目录…

FPGA实现IIC驱动环境光、距离传感器

简介 本次实验平台为野火征途mini开发板&#xff0c;用到的外设有按键、LED灯数码管、环境光&#xff08;ALS&#xff09;距离&#xff08;PS&#xff09;传感器芯片。 AP3216C是一款环境光、距离传感器芯片&#xff0c;其接口为IIC接口&#xff0c;FPGA通过IIC接口可以配置工…

聊聊select for update到底加了什么锁

前言 最近在开发需求的时候&#xff0c;用到了select...for update。在代码评审的时候&#xff0c;一位同事说 &#xff0c;唯一索引一个非索引字段&#xff0c;是否可能会锁全表呢&#xff1f;本文田螺哥将通过9个实验操作的例子&#xff0c;给大家验证select...for update到…

回归预测 | MATLAB实现Attention-GRU多输入单输出回归预测(注意力机制融合门控循环单元,TPA-GRU)

回归预测 | MATLAB实现Attention-GRU多输入单输出回归预测----注意力机制融合门控循环单元&#xff0c;即TPA-GRU&#xff0c;时间注意力机制结合门控循环单元 目录 回归预测 | MATLAB实现Attention-GRU多输入单输出回归预测----注意力机制融合门控循环单元&#xff0c;即TPA-G…