欧拉角

欧拉角研究 

吃可爱长大的小学妹 提交于 2020-02-21 05:28:28
https://www.cnblogs.com/liuzhenbo/p/10749458.html 欧拉角研究  对于在三维空间里的一个参考系,任何其它坐标系的取向,都可以用三个欧拉角来表现。参考系又称为实验室参考系,是静止不动的。而坐标系则固定于刚体,随着刚体的旋转而旋转。   欧拉角是用来表示三维坐标系中方向和方向变换的。我们平时说的欧拉角其实还可以细分为欧拉角(Euler-angles)和泰特布莱恩角(Tait-Bryan-angles),这两种方法都利用了笛卡尔坐标系的三轴作为旋转轴,主要区别在于选取顺序。欧拉角的选取顺序有 这6种,可见选取顺序是a,b,a这样的顺序,也就是绕a轴旋转某角度后,绕新生成的b轴旋转一个角度,最后绕两次旋转以后的a轴再旋转一个角度,以此表示最终的方向。泰特布莱恩角的旋转轴选取有 这6种,也就是历遍笛卡尔坐标系的三轴,比如我们最常见到的Roll-Pitch-Yaw角就是其中 的情况。但这两种方法,其实都是在空间中用最直观的方式和最少的参数表示任意方向的通用方法。 (一) zxz顺序欧拉角 如下图所示。设定xyz-轴为参考系的参考轴XYZ-轴为物体上的坐标系轴。称xy-平面与XY-平面的相交为交点线,用英文字母(N)代表。zxz顺规的欧拉角可以静态地这样定义 α 是x-轴与交点线的夹角, β 是z-轴与Z-轴的夹角, γ 是交点线与X-轴的夹角。

旋转矩阵、欧拉角、四元数理论及其转换关系

元气小坏坏 提交于 2020-01-31 04:10:32
https://www.cnblogs.com/flyinggod/p/8144100.html 这才真正说清了 欧拉角的含义。 从旋转矩阵 来理解 才是最正确的方法。 线性代数 能解释旋转矩阵 以后再回炉把, 总算弄清楚了。 之前定义都搞错。 以为是,x,y,z 3个轴各自旋转,坑到家了。 旋转矩阵、欧拉角、四元数理论及其转换关系 博客转载自:http://blog.csdn.net/lql0716/article/details/72597719 1. 概述 旋转矩阵、欧拉角、四元数主要用于表示坐标系中的旋转关系,它们之间的转换关系可以减小一些算法的复杂度。 本文主要介绍了旋转矩阵、欧拉角、四元数的基本理论及其之间的转换关系。 2、原理 2.1 旋转矩阵 对于两个三维点 p 1 ( x 1 , y 1 , z 1 ), p 2 ( x 2 , y 2 , z 2 ),由点 p 1 经过旋转矩阵 R 旋转到 p 2,则有 注:旋转矩阵为正交矩阵 R R T = E 任意旋转矩阵: 任何一个旋转可以表示为依次绕着三个旋转轴旋三个角度的组合。这三个角度称为 欧拉角 。 三个轴可以指固定的世界坐标系轴,也可以指被旋转的物体坐标系的轴。三个旋转轴次序不同,会导致结果不同。 2.2 欧拉角 欧拉角有两种: 静态 :即绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态。

Unity 欧拉角万向节锁的原理

只谈情不闲聊 提交于 2020-01-26 04:29:42
网上文章很多,有些写的很详细,但是我个人理解起来有不是很顺畅,把几个重要的知识点整理一下 欧拉角 :欧拉角用于控制物体的旋转角度,在Unity中欧拉角的表示就是一个Vector3,例如 Vector3 v3 = new Vector3(30,30,30) Unity的欧拉角 旋转顺序 是 Z-X-Y,这个旋转顺序在不同的软件,行业有所不同,没有一个全球统一标准。 旋转顺序 :同样的输入值,不同的旋转顺序,得到的结果不同 静态欧拉角 :旋转的参考坐标系保持不变(Space.World),这种情况不产生万向节锁 动态欧拉角 :旋转的参考坐标系为物体自身的局部坐标系(Space.Self),特定情况下会产生万向节死锁 万向节死锁 : 中间旋转顺序轴(X) 旋转90°,使前顺序轴(Z)和 世界坐标系 的后顺序(Y)轴重叠,这样在世界坐标系的观察空间内,物体绕自己的Z轴旋转,就跟物体绕着世界坐标系的Y轴旋转一样,这样看物体坐标的Z轴自由度似乎消失了,这种情况就称为万向节死锁。 欧拉角存在多对一的关系,即物体的最终旋转情况,可以用多个欧拉角来表示,例如 Vector3(90,30,30) 等价于 Vector3(90,20,20) 且慢,我刚刚,看到一个跟规定不符合的情况,Uniyt的旋转顺序似乎是 Y-X-Z !!!!!!为什么大家都说是Z-X-Y啊?? 如果是Y-X-Z

四元数和欧拉角

空扰寡人 提交于 2020-01-23 16:28:53
来源:http://blog.csdn.net/candycat1992/article/details/41254799 四元数介绍 旋转,应该是三种坐标变换——缩放、旋转和平移,中最复杂的一种了。大家应该都听过,有一种旋转的表示方法叫四元数。按照我们的习惯,我们更加熟悉的是另外两种旋转的表示方法——矩阵旋转和 欧拉旋转 。矩阵旋转使用了一个4*4大小的矩阵来表示绕任意轴旋转的变换矩阵,而欧拉选择则是按照一定的坐标轴顺序(例如先x、再y、最后z)、每个轴旋转一定角度来变换坐标或向量,它实际上是一系列坐标轴旋转的组合。 那么, 四元数 又是什么呢?简单来说,四元数本质上是一种高阶复数(听不懂了吧。。。),是一个四维空间,相对于复数的二维空间。我们高中的时候应该都学过复数,一个复数由实部和虚部组成,即x = a + bi,i是虚数单位,如果你还记得的话应该知道i^2 = -1。而四元数其实和我们学到的这种是类似的,不同的是,它的虚部包含了三个虚数单位,i、j、k,即一个四元数可以表示为x = a + bi + cj + dk。那么,它和旋转为什么会有关系呢? 在Unity里,tranform组件有一个变量名为rotation,它的类型就是四元数。很多初学者会直接取rotation的x、y、z,认为它们分别对应了Transform面板里R的各个分量。当然很快我们就会发现这是完全不对的

UE4解决万向锁问题

回眸只為那壹抹淺笑 提交于 2020-01-17 02:29:22
万向锁 目录 万向锁的来源 Unity中最简单的万向锁 UE4最简单万向锁 解决方案 四元数与欧拉角之间的转换 参考链接 目录 万向锁的来源 简单而言,万向锁就是由于物体在进行旋转时(前提是通过欧拉角进行旋转),当旋转到某个特定角度会导致两个旋转轴处于同一个平面,导致旋转不能到达自己的预期效果,产生这种现象的原因是因为轴与轴之间存在父子关系。 视频展示链接:https://www.bilibili.com/video/av76536794/ Unity中最简单的万向锁 将x轴设为90度,旋转y轴和旋转z轴有相同效果 UE4最简单万向锁 将y轴设为90度,旋转x轴和旋转z轴有相同效果 旋转角度为0时: 绕y轴旋转90度时: x轴和z轴的值都奇怪的变成了180度,或者当y轴设为90度时,旋转x轴和z轴效果相同 , 解决方案 1 使用x轴旋转代替y轴旋转,首先将z值设置为90度,然后旋转x轴即可产生绕y轴旋转的效果 不过此方案只适用于比较规则的物体,如长方体,正方体 2 使用四元数旋转来代替欧拉角 四元数与欧拉角之间的转换 四元数的定义 四元数与欧拉角的转换 下面展示使用UE4,通过四元数处理物体旋转的代码: // An highlighted block // Fill out your copyright notice in the Description page of

万向节死锁

。_饼干妹妹 提交于 2020-01-07 17:49:53
什么是欧拉角(Eular Angles)? 欧拉角是瑞士数学家莱昂哈德·欧拉(Leonhard Euler)用来描述刚体在三维空间中取向的方法。简单来说,就是任何一个物体的取向,都可以用3个有次序的旋转角度来表示。 欧拉在三维空间中定义了一个静止不动的参考系,即惯性系 。还定义了一个运动的坐标系,即物体坐标系。惯性系与物体坐标系的区别在于,当物体取向发生改变之后,物体坐标系也随之改变,而惯性系却不变。 例如,我们认为北极星的位置对于地球上的任意观察点都是不变的,因此可以看作一个静止的参考系。而基于公路上一辆行驶的汽车的坐标系,因为汽车的转弯而不断改变,是一个物体坐标系。 欧拉角的三个旋转是绕物体坐标系的三个轴复合形成 。为何不使用惯性系?因为物体坐标系在数学处理上是简单的。为了描述一架飞机的取向,定义航偏角为yaw, 俯仰为pitch, 横滚为roll。假如分别使用矩阵I1, I2, I3来表示这三个角度,那么飞机绕自身先转yaw角,再绕pitch角,最后绕roll角的结果可用I3 I2 I1来表示。 有关矩阵,看这里 。 通常来说,一个物体的取向用欧拉角来表示是简单有效的。但是在某种特殊的情况下,欧拉角将失效,形成所谓的“万向节死锁”。 一个简单直观的例子是炮塔模型。假设地面上的一个炮塔有两个旋转轴:Y垂直于地面,使炮塔可以平行地面360度旋转(正北设为0度);X平行于地面

coscos3D 基础教程与实践

强颜欢笑 提交于 2019-12-28 03:54:23
目录 1.cocos creator 3D坐标系 2.TS 组件代码介绍 3.vec3 4.node基础属性与缩放 5.欧拉角与四元数 6.Node 旋转 7.摄像机 8.模型显示以及动画播放 9.常用3DShader 10.天空盒的使用 待续... 1.cocos creator 3D坐标系 水平向右边 x轴; 竖直向上 y轴; 垂直于屏幕向外: Z; 物体的前方: (-z), 右边(+x) 上面(+y) 3D坐标系:右手,左手坐标; 2.TS 组件代码介绍 //具体ts 脚本使用教程地址: https://blog.csdn.net/osuckseed/article/details/103697957 //从指定模块导出对应的符号 import { _decorator, Component, Node,Vec3, CCObject } from "cc"; //装饰器 编辑器装载脚本代码的时候读取的 //ccclass :指定类为组件类 //property:作为属性绑定为到编辑器 const { ccclass, property } = _decorator; //装饰器以@开头 编辑器识别后把它作为组件类 //export:导出类 import{gameMgr} frrom "./gameMgr" @ccclass("gameMgr") export class

Eigen 中四元数、欧拉角、旋转矩阵、旋转向量

这一生的挚爱 提交于 2019-12-20 03:59:22
一、旋转向量 1.0 初始化旋转向量:旋转角为alpha,旋转轴为(x,y,z) Eigen::AngleAxisd rotation_vector(alpha,Vector3d(x,y,z)) 1.1 旋转向量转旋转矩阵 Eigen::Matrix3d rotation_matrix; rotation_matrix=rotation_vector.matrix(); Eigen::Matrix3d rotation_matrix; rotation_matrix=rotation_vector.toRotationMatrix(); 1.2 旋转向量转欧拉角(Z-Y-X,即RPY) Eigen::Vector3d eulerAngle=rotation_vector.matrix().eulerAngles(2,1,0); 1.3 旋转向量转四元数 Eigen::Quaterniond quaternion(rotation_vector); Eigen::Quaterniond quaternion;Quaterniond quaternion; Eigen::Quaterniond quaternion;quaternion=rotation_vector; 二、旋转矩阵 2.0 初始化旋转矩阵 Eigen::Matrix3d rotation_matrix;

简单VR照片 使用陀螺仪、姿态角(Roll、Pitch、Yaw )、四元数

拈花ヽ惹草 提交于 2019-12-18 09:04:04
最近在做一个类似VR照片的demo,跟全景图片也很像,只是VR照片与全景720度显示,我只做了180度。但我发现他们实现的原理有一丝相似,希望可以给一些想入行AR、VR的朋友一些提示吧。 要想根据用户摇晃手机的行为轨迹展示相应的场景,那必须要使用移动端的陀螺仪、加速器等传感器来做相应的协调。现在的移动端已经提供了很多传感器,你可以根据自己的需要获取相应的数据。 刚开始的时候,我使用传感器提供的姿态角,也称为欧拉角:pitch yaw roll 来显示。这种 姿态角/欧拉角 比较常用在航空上,无人机技术应该也使用到了这个技术点。我用飞机的模型来展示一下这三个角,就一目了然了(不同作者使用不同的坐标系,使用哪种坐标系,个人而定。): 图一 姿态角/欧拉角 在数学上理解起来会有点抽象,我也是稍理解一点。在维基百科上,欧拉角定义为:用来描述刚体在三维欧几里得空间的取向,对于任何参考系,一个刚体的取向,是依照顺序,从这参考系,做三个欧拉角的旋转而设定的。有兴趣了解得深入一点,可以参考(需翻墙): https://zh.wikipedia.org/wiki/%E6%AC%A7%E6%8B%89%E8%A7%92 我们也可以简单理解这三个角代表什么意思: 1、俯仰角θ(pitch):围绕Y轴旋转的。 图二 2、偏航角ψ(yaw):围绕Z轴旋转的角度。 图三 3、滚转角Φ(roll)

6-DoF相关基础知识整理

岁酱吖の 提交于 2019-12-09 22:24:28
刚刚接触这个领域,因此打算花点时间先整理一下相关的一些基础的知识。 首先是第一个概念 一、什么是6-DoF,即6个自由度是什么? 首先,先解释一下自由度,自由度与刚体在空间中的运动相关。可以理解为物体移动的不同基本方式。 自由度一共有6个,可以分为两种类型:平移和旋转。 1. 平移运动   刚体可以在3个自由度中平移:向前/后,向上/下,向左/右 2. 旋转运动   刚体在3个自由度中旋转:纵摇(Pitch)、横摇(Roll)、垂摇(Yaw) 因此,3种类型的平移自由度+3种类型的旋转自由度 = 6自由度 在任意一个自由度中,物体可以沿两个“方向”自由运动。例如,电梯限制在1个自由度中(垂直平移),但电梯能够在这个自由度中上下运动。同样,摩天轮限制在1个自由度中,但这是旋转自由度,所以摩天轮能够朝相反的方向旋转。 我们可以继续举例子,比如说主题公园。碰碰车总共有3个自由度:它只能在3轴中的2条里平移(无法像电梯那样上下移动);然后它只能以一种方式旋转(无法像飞机那样纵摇和垂摇)。 所以2个平移+1个旋转=3自由度。 无论有多复杂,刚体的任何可能性运动都可以通过6自由度的组合进行表达。 例如在你用球拍击打网球的时候,球拍的复杂运动可以表示为平移和旋转的组合。 二、PnP算法 1. PnP算法是什么? PnP(Perspective-n-Point)是求解 3D 到 2D