本文发布于游戏程序员刘宇的个人博客,长期更新,转载请注明源地址,博客园同步更新https://www.cnblogs.com/xiaohutu/p/10979936.html
数学,是人类对客观世界中数量关系和空间形式本质特征进行研究的科学。对同样的某一特征或者关系,可以根据需求用不同的数学符号、定义和过程来表达。在游戏引擎中,我们也有很多这样的例子,比如本文说到的旋转。
欧拉角
旋转是一个过程,一个物体围绕周或者点角度变化的过程。为了描述这个过程我们必须有参照物,于是我们先定义一个世界坐标系,笛卡尔坐标系。
欧拉角用(x, y, z) 分别来表示这个物体相对三个坐标系的夹角,这是由数学家欧拉首先提出而得名的。
然而仅仅有(x, y, z) 来表示旋转是不够的,还有两个因素:
首先是旋转顺序,从各个轴上进行角度旋转时xyz先后的不同会得到不同的结果。我们称这个顺序定义为顺规,下面一段是维基百科的定义:
在经典力学里,时常用zxz顺规来设定欧拉角;照着第二个转动轴的轴名,简称为x顺规。另外,还有别的欧拉角组。合法的欧拉角组中,唯一的限制是,任何两个连续的旋转,必须绕着不同的转动轴旋转。因此,一共有12种顺规。例如,y顺规,第二个转动轴是y-轴,时常用在量子力学、核子物理学、粒子物理学。另外,还有一种顺规,xyz顺规,是用在航空航天工程学;
按(z-x-z, x-y-x, y-z-y, z-y-z, x-z-x, y-x-y)轴序列旋转,即第一个旋转轴和最后一个旋转轴相同,我们称之为经典欧拉角(Proper Euler Angle)。
按(x-y-z, y-z-x, z-x-y, x-z-y, z-y-x, y-x-z)轴序列旋转,即三个不同的轴,我们称之为泰特布莱恩角(Tait–Bryan angles)。
其次是旋转的参照坐标系,欧拉角按旋转的坐标系分为: