欧拉角 图解释

2023-10-29

定义

先引wiki上的定义
欧拉角:由三个角度组成,在特定坐标系下用于描述刚体的orientation.

简单来说,就是绕一个三维坐标系统下的三个基轴旋转三个角度,可以用来表示物体通过各种绕七绕八的转,最终转到的那种形态(orientation)。

这里的orientation我不知道该怎么翻译,指的是物体的“朝向“,但绝对不是指一个方向(direction)或者我们说的向量(vector),或许用“物体姿态“来描述orientation更好。


当你旋转一个向量时,向量是不会改变的,因为向量没有orientation这个属性
旋转一个向量
而当你旋转一个物体时,你就会改变这个物体的orientation
旋转一个物体

我个人想把orientation翻译为“旋向”,指物体旋转的方向。(雾)

表示一个方向,我们不一定要用向量,向量包含了多余的长度信息,所以最少只需要两个角度就够了(三维极坐标系)
而表示一个旋向 orientation,或者说物体姿态,用变量最少的欧拉角也需要用到三个角度
从变量个数来看, 自然的,向量与orientation不同。整整差了个维度呢。

欧拉角可以表示任意的orientation,当你在Unity里的inspector面板里调节rotation的时候,其实你也是在调节一个欧拉角(后文再提)。

希望这段文字可以讲清楚什么是orientation,并请务必搞清楚什么是orientation,让我们继续。

分类

欧拉角按旋转的坐标系分为内旋(intrinsic rotation)和外旋(extrinsic rotation)。
旋转轴分为经典欧拉角(Proper Euler Angle)和泰特布莱恩角(Tait–Bryan angles)。
本文中我们用(φ, θ, ψ)(轴序,zyx) 来描述一个欧拉角

经典欧拉角(Proper Euler Angle)

按(z-x-z, x-y-x, y-z-y, z-y-z, x-z-x, y-x-y)轴序列旋转,即第一个旋转轴和最后一个旋转轴相同

泰特布莱恩角(Tait–Bryan angles)

按(x-y-z, y-z-x, z-x-y, x-z-y, z-y-x, y-x-z)轴序列旋转,即三个不同的轴



内旋(intrinsic rotation)

绕物体自身的坐标系object-space 旋转,举个例子,一个(φ, θ, ψ) (xyz,instrinsic)的欧拉角,指绕物体的x轴转φ后,再绕物体的y’轴(这里用y’表示这个新的y轴已经和一开始世界坐标系下的那个物体的y轴不一样了)旋转θ,最后绕z’轴旋转φ,每一次旋转都会改变下一次旋转的轴。这种情况下旋转的轴是动态(moving axis)的。

下图引自wiki,一个zxz的内旋
一个zxz的内旋

外旋(extrinsic rotation)

绕惯性系upright-space 旋转(upright space指基向量平行于world-space或parent-space,原点与object-space的原点重合的空间)。
也就说,无论是三步旋转中的哪一步,轴都是固定的,是不会动的。
unity中的rotation就是一种外旋。

一个rotation为(0,0,30)的飞机
pic3
旋转到(0,90,0),可以看到飞机并没有沿着旋转后的y轴(灰色箭头)旋转,仍然依照世界坐标系下的y轴(红色箭头)旋转
pic4


yaw-pitch-row(heading-pitch-bank)

我们把(z,y,x 内旋(intrinsic))的这种格式称为 yaw-pitch-roll(heading-pitch-bank)

下图引自wiki,yaw pitch & orw
wiki YPR
图中的绿色箭头为yaw(heading),红色箭头为pitch,蓝色箭头为row(bank)

pic7

关于unity中的欧拉角

我本来想自己写的,可惜已经有人写过了
这个帖子写的很好,看这个就行了
http://blog.csdn.net/andrewfan/article/details/60866636

关于万向节死锁(gimbal lock)

同样的,看andrewfan的这个帖子就行了,讲的挺清楚
http://blog.csdn.net/andrewfan/article/details/60981437
关于万向节死锁,我再赘述一下
Unity中的rotation是(φ, θ, ψ) (zxy ,外旋(extrinsic)),也就是说,当我先绕世界坐标z轴旋转40,再绕世界坐标x轴旋转90,最后绕世界坐标y轴旋转-20的结果(40,90,-20)
和先绕世界坐标z轴旋转60,再绕世界坐标x轴旋转90的结果(60,90,0)的结果是一样的
(补充一下,旋转的方向由坐标系决定,比如图中是左手系,就按左手螺旋来判定旋转方向。)
这里看到两种欧拉角旋转的结果是等价的,并且当x旋转90度时,任意的(a,90,b)都能用(a-b,90,0)来描述。此时我们称z轴失去了自由度,并称这种情况为万向节死锁
个人觉得这种现象是因为欧拉角表示一个orientation的的不唯一性引起的,这也欧拉角没办法做插值的主要原因。
具体还是看上面的帖子吧

pic5
pic6

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

欧拉角 图解释 的相关文章

  • LoadRunner11 脚本关联操作-(学习中)

    一 首先了解关联的定义 服务器返回给客户端的是一些动态变化的值 客户端使用动态变化的值去访问服务器的时候 不能把这些值写死在脚本里面 而应该存放在一个变量里面 实时去获取服务器返回的动态值 简而言之 就是将录制脚本的静态值 再转换成动态值
  • 2021-1-30Linux学习纪要

    压缩和解压类 gzip gunzip gzip 用与压缩文件 gunzip 用于解压缩文件 特点把文件压缩之后原来的文件就没有了 同样的解压之后 压缩文件也没有了 zip 选项 xxx zip 将要压缩的内容 功能描述 压缩文件和目录的命令
  • 百川智能发布开源中英文大模型;GitHub调查显示92%的程序员使用AI编码工具;第一季度中国云服务支出增长6%丨每日大事件...

    数据智能产业创新服务媒体 聚焦数智 改变商业 企业动态 百川智能发布开源中英文大模型 6月15日 百川智能公司推出了70亿参数量的中英文预训练大模型 baichuan 7B baichuan 7B在C Eval AGIEval和Gaokao
  • 4.决策树

    决策树 一 决策树概述 训练阶段 根据训练数据构造决策树模型 在测试阶段 对数据进行分类 决策树重要的三个阶段 1 特征的选择 2 决策树的生成 3 决策树剪枝 决策树内部节点表示特征或者属性 叶节点表示类别 特征的选择 根据信息增益 ID
  • totimestamp mysql_mysql多个TimeStamp设置

    timestamp设置默认值是Default CURRENT TIMESTAMP timestamp设置随着表变化而自动更新是ON UPDATE CURRENT TIMESTAMP 但是由于 一个表中至多只能有一个字段设置CURRENT T
  • 使用websocket模拟一下发送和接收消息

    好的 下面是使用 WebSocket 模拟发送和接收消息的一些指导思路 在客户端和服务端之间建立 WebSocket 连接 客户端可以使用 JavaScript 的 WebSocket 对象来建立连接 服务端可以使用支持 WebSocket

随机推荐

  • 图像识别小车(PCB设计)——电赛学习笔记(4)

    学习来源 B站唐老师讲电赛 PCB设计极速入门 立创EDA ALTIUM DESIGNER 10 0PCB设计极速入门 立创EDA ALTIUM DESIGNER 10 0 哔哩哔哩 bilibili 一 设计过程 使用嘉立创EDA加Alt
  • 【初探DETR】UP-DETR 复现

    项目链接 https github com dddzg up detr 论文 https arxiv org abs 2011 09094 UP DETR 遵循两个步骤 预训练和微调 展示了在 ImageNet 上预训练的模型 然后在 CO
  • MOS管的使用方法

    转载自http blog csdn net qingwufeiyang12346 article details 48385773 http user qzone qq com 2756567163 1 三个极的判定 栅极 G 中间抽头 源
  • java 分布式日志_打造分布式日志收集系统

    前言 系统一大 就会拆分成多个独立的进程 比如web wcf web api等 也就成了分布式系统 要看一个请求怎么从头到尾走的 就有些困难了 要是进行DEBUG 跟踪 就更加麻烦了 困难程度要视进程多少而定 越多越复杂 分布式日志收集系统
  • Java工作线程 主存 同步机制_Java 并发变成同步机制

    并发编程的演进 批处理 多进程 多线程 在多线程变成中 由于多个线程共享进程的变量 有可能出现同时访问一个资源的情况 因此需要使用同步机制 java的内存模型 Java内存模型规定所有的变量都存在主存当中 每个线程都有自己的工作内存 线程对
  • netty5学习笔记-内存池4-PoolArena

    前面我们讲到了内存池中的几个重要的类 1 PoolChunk 维护一段连续内存 并负责内存块分配与回收 其中比较重要的两个概念 page 可分配的最小内存块单位 chunk page的集合 2 PoolSubpage 将page分为更小的块
  • Node.js通过js_code获取微信小程序的session_key和openid

    前言 小程序自己写一个node后台服务来接收前段的code 访问微信后台获取他的session key和openid const url require url const http require http const request r
  • 【go】Unmarshal时候报错提示proto.Unmarshal: missing method ProtoReflect

    问题 使用proto Unmarshal报错 提示以下信息 cannot use promoRule variable of type db PromotionRuleSet as protoreflect ProtoMessage val
  • 【WebStorm学生认证】如何用学生邮箱进行JetBrains学生认证

    前言 用邮箱进行学生认证 为期一年 到期再次进入官网续期即可 1 进入JetB rains官网 会看到右侧有个白色小人图案 点进去登录 注册 如果没有账号 如下图所指位置 注册一个 注意 采用学生邮箱 edu 邮箱 进行注册 有账号直接登录
  • Apollo自动驾驶系统概述——传感器技术(文末参与活动赠送百度周边)

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 React从入门到精通 前端炫酷代码分享 从0到英雄 vue成神之路 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架
  • 独家定制来了!免费帮你生成专属你的卡通头像!

    在如今的互联网时代 无论是哪个平台 都会使用到头像 你最喜欢用哪种头像 为满足大家的少男少女之心 皮卡智能最新研发了一款新的卡通头像风格 Q版卡通头像 可爱到像是定制绘画出来的 话不多说 直接上效果吧 原图 原图 原图 无论你是大叔还是萝莉
  • 放大电路中的反馈(电压串联负反馈,电流串联负反馈,电压并联负反馈,电压并联负反馈)

    放大电路中的反馈 反馈的判断 反馈的存在与否 从结构上判断 结构上存在一个通路 关系上存在一个反馈量 图a 从结构来讲不存在一个通路 图b 从结构来讲存在一个通路 从关系来讲 将Ui置零 输入反向端出现了一个R1 R1 R2 Uo这样一个信
  • 王垠——想得太多,做得太少

    我大四的时候 读到王垠从清华退学的文章 当时我虽然还没有正式开始攻读博士学位 但是也在实验室待了一年多了 老油条一根 对清华的博士生的学习生活了解得差不多了 当时读王垠的文章 我开始很不解 就剩一年 何不再坚持一下呢 后来我了解到一个人不能
  • GBase 8s 的四种运行模式

    1 离线模式 不能执行任何操作 2 在线模式 可以执行各种操作 3 单用户模式 可以执行SQL操作和命令行维护操作 只能管理员 GBASEDBT DBSA 连接 其它普通用户不能连接 4 静态模式 只能执行命令行维护操作 如备份数据库
  • 常用SQL语句-Part1

    1 向某个数据表中 增加一列 Oracle Alter Table table name Add column name colomn type Commit Sql Server Alter Table table name Add co
  • 超级实用的shell脚本100例(一)

    超级实用的shell脚本100例 一 1 编写 hello world 脚本 bin bash echo hello world 2 通过位置变量创建 Linux 系统账户及密码 bin bash 1 是执行脚本的第一个参数 2 是执行脚本
  • Android 简介

    国内移动互联网发展史 播种 2000年9月19日 中国移动和国内百家ICP首次坐在了一起 日本取经 2001年11月10日 中国移动通信的 移动梦网 正式开通 萌芽 萌芽时期 先后冒出了搜索 音乐 阅读 游戏等领域的多种无线企业 不过 整个
  • Visual Studio修改代码后运行程序不更新问题解决方案

    一 在生成中重新生成 但是此方法需要每次修改后重新点击 二 配置生成管理器 路径 生成 配置管理器 勾选 生成 刚学visual studio 2022 3天 自己摸索出来的方案
  • 福布斯发布区块链50强 这5家中国公司上榜

    福布斯发布区块链50强 这5家中国公司上榜 附榜单 福布斯今日 2月20日 在官网发布第二届 区块链50强 Blockchain 50 榜单 据福布斯评选标准 入选 Blockchain 50 榜单的公司必须每年营收不少于10亿美元或估值超
  • 欧拉角 图解释

    定义 先引wiki上的定义 欧拉角 由三个角度组成 在特定坐标系下用于描述刚体的orientation 简单来说 就是绕一个三维坐标系统下的三个基轴旋转三个角度 可以用来表示物体通过各种绕七绕八的转 最终转到的那种形态 orientatio