unity---欧拉角与四元数
欧拉角
使用三个数字来保存方位(描述物体的朝向),使用Vector3存储但并不代表向量;代表一系列的三维基本旋转,也就是围绕一个坐标系的每个轴的一系列旋转。
- 仅使用三个数字表达方位,占用空间小
- 优点:三个角度(沿坐标轴旋转的单位)组成,直观,容易理解。
- 优点:可以进行从一个方向到另一个方向旋转大于180度的角度。
- 缺点:万向节死锁问题。 《【Unity编程】欧拉角与万向节死锁(图文版)》
- 缺点:对于一个方位,存在多个欧拉角描述,因此无法判断多个欧拉角代表的角位移是否相同。比如(250,0,0)与(290,180,180)为同一个欧拉角,为了保证任意方位都只有独一无二的表示,Unity引擎限制了角度范围,即沿X轴旋转限制在-90到90之间,沿Y与Z轴 旋转限制在0到360之间。
欧拉角分类
静态:即绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态
动态:即绕物体坐标系的三个轴的旋转,由于物体的旋转过程中坐标轴随着物体做着相同的旋转,所以称之为动态(存在万向节死锁问题)
四元数
内部由四个数字(在Unity中称为x,y,z和w)组成,表示三维空间中的旋转。
- 优点:四元旋转不存在万向节锁问题。
- 优点:存储空间小,计算效率高。
- 缺点:单个四元数不能表示在任何方向上超过180度的旋转。
- 缺点:四元数的数字表示不直观。