欧拉角的详解

Posted ybchen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了欧拉角的详解相关的知识,希望对你有一定的参考价值。

关于旋转永远是做游戏的难点和混乱点。我们知道表示一个旋转有多种方式,简单的欧拉角,复杂点的四元数,再复杂点的矩阵。之前接触unity可以用四元数和欧拉角两种方式表示旋转,最近一直研究虚幻引擎,目前只看到了欧拉角这一种旋转方式。

欧拉角是表达旋转的最简单的一种方式,形式上它是一个三维向量,其值分别代表物体绕坐标系三个轴(x,y,z轴)的旋转角度。这样的话,很容易想到,同样的一个三维向量,代表了绕x,y,z的旋转值,先进行那个旋转是否对结果有影响呢?显然是有影响的,可以拿着你的手机试一下,不同的旋转顺序会代表不同的旋转结果。所以,一般引擎都会规定自己的旋转顺序。 
下面三张动图形象的表示了欧拉角的旋转方式。第一张是绕x轴旋转pitch,第二张绕y轴旋转yaw,第三张是绕z轴旋转roll。

技术图片技术图片技术图片

绕三个轴的旋转值pitch,yaw,roll来自航空界的叫法,翻译为俯仰角,偏航角,翻滚角,非常形象。它们不一定如上所述,一定分别代表绕x,y,z的旋转值。 
从英文意思出发,roll:是卷;滚动,转动;辗的意思; 
yaw是(火箭、飞机、宇宙飞船等)偏航的意思; 
pitch是倾斜;投掷;搭帐篷;坠落的意思; 
所以,

  roll:是翻滚的意思是,就是绕着机身所在的那个轴 a (z);

  yaw:是偏航的意思,偏航就是绕着重力方向为轴 y ;

  pitch:是偏航俯仰的意思,即倾斜、坠落的意思,坠落就是以翅膀所在的直线为轴(x)发生旋转。

另外值得注意的是,pitch值是不能超过90度,这里牵扯到了万向锁的知识,不再多说,网上很多讨论。

下面这张图是以摄像机的角度来阐述欧拉角的,可以加深理解。可以看到,pitch,yaw,roll在这里并不是常见的代表绕x,y,z的旋转值。 

技术图片

以上是关于欧拉角的详解的主要内容,如果未能解决你的问题,请参考以下文章

unity没有提供四元数到欧拉角的转换函数吗

欧拉角与四元数转换——编程

在给定欧拉角的情况下,在 Blender Python 中获取定向光线上的 3D 点

欧拉角万向节死锁与四元数的相关资料

Matlab练习——rpy2tr函数与自己实现的ZYX欧拉角的结果不同的问题

unity3d把 x的欧拉角赋给y啥作用