旋转的数学表达:欧拉角、轴向角、四元数与矩阵

       本文发布于游戏程序员刘宇的个人博客,长期更新,转载请注明源地址,博客园同步更新https://www.cnblogs.com/xiaohutu/p/10979936.html

       数学,是人类对客观世界中数量关系和空间形式本质特征进行研究的科学。对同样的某一特征或者关系,可以根据需求用不同的数学符号、定义和过程来表达。在游戏引擎中,我们也有很多这样的例子,比如本文说到的旋转。

 

欧拉角

  旋转是一个过程,一个物体围绕周或者点角度变化的过程。为了描述这个过程我们必须有参照物,于是我们先定义一个世界坐标系,笛卡尔坐标系。

      旋转的数学表达:欧拉角、轴向角、四元数与矩阵_第1张图片

  欧拉角用(x, y, z) 分别来表示这个物体相对三个坐标系的夹角,这是由数学家欧拉首先提出而得名的。 

          旋转的数学表达:欧拉角、轴向角、四元数与矩阵_第2张图片

  然而仅仅有(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)


  其次是旋转的参照坐标系,欧拉角按旋转的坐标系分为:
  内旋(intrinsic rotation)即按照物体本身的坐标系进行旋转,坐标系会跟随旋转与世界坐标系产生偏移。
  外旋(extrinsic rotation)即根据世界坐标系进行旋转。
  这是我们看看Unity3d中Transform的Rotate&

你可能感兴趣的:(算法相关,算法,游戏开发)