万向节

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的各个分量。当然很快我们就会发现这是完全不对的

万向节死锁

。_饼干妹妹 提交于 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平行于地面

欧拉角与万向节死锁

喜你入骨 提交于 2019-11-29 21:36:34
转载请保留博主链接: http://blog.csdn.net/andrewfan 万向节死锁(Gimbal Lock)问题 上文中曾经说过,欧拉旋转的顺规和轴向定义,自然造就了“万向节死锁”问题。本文主要来探索它自然形成的原因。 陀螺仪 首先,我们来了解Gimbal 究竟是个什么玩意儿。下面来自维基百科中关于Gimbal的一段引述: 平衡环架(英语:Gimbal)为一具有枢纽的装置,使得一物体能以单一轴旋转。由彼此垂直的枢纽轴所组成的一组三只平衡环架,则可使架在最内的环架的物体维持旋转轴不变,而应用在船上的陀螺仪、罗盘、饮料杯架等用途上,而不受船体因波浪上下震动、船身转向的影响。 上图就是一个Gimbal装置了,它是一个陀螺仪。中间有一根竖轴,穿过一个金属圆盘。金属圆盘称为转子,竖轴称为旋转轴。转子用金属制成,应该是了增加质量,从而增大惯性。竖轴外侧是三层嵌套的圆环,它们互相交叉,带来了三个方向自由度的旋转。 看着不停转来转去,有点晕,接下来看两个静态的。这两张图来自百度百科。 中文注释: 其中Gimbal只代表陀螺仪装置中的平衡环,显然维基百科上将它解释成“平衡环架”更为合理。 Pitch、Yaw、Roll 在解释陀螺仪的工作原理之前,我先介绍一些转动的术语。在飞行器的航行中,进行XYZ三个方向旋转的旋转有专业的术语,见下图: 沿着机身右方轴(Unity中的+X)进行旋转,称为