3D 欧拉角

来源:互联网 发布:宇宙大爆炸 知乎 编辑:程序博客网 时间:2024/04/30 06:14

欧拉角:欧拉角的基本思想是将角位移分解为绕三个互相垂直轴的三个旋转组成的序列。这听起来很复杂,其实它是非常直观的(事实上,易于使用正是它的主要优点之一)。之所以有“角位移”的说法正是因为欧拉角能用来描述任意旋转。

  欧拉角将方位分解为绕三个互相垂直轴的旋转,那么是哪三个轴?按什么顺序?其实,任意三个轴和任意顺序都可以,但最有意义的是使用笛卡尔坐标系并按一定顺序所组成的渲染序列。最常用的约定是所谓的“heading-pitch-bank"约定。在这个系统中,一个方位定义为heading 角,一个pitch  角,和一个 bank角。它的基本思想是让物体开始于”标准“方位---就是物体坐标轴和惯性坐标轴对齐。在标准方位上,让物体作heading、pitch、bank旋转,最后物体到达我们想要描述的方位。

关于欧拉角的其他约定:

    heading--pitch--bank  系统有多个名称。当然,不同的名字并不代表不同的约定,这其实并不重要。一组常用的术语是roll--pitch--yaw,其中的roll 等价于bank, yaw 等价于heading, 注意它的顺序和heading--pitch--bank 的顺序相反。这只是语义上的。它定义了向量从物体坐标系变换到惯性坐标系的旋转顺序。(事实上,yaw和 heading 还是有技术上的差别,yaw 是绕物体坐标系y轴的旋转,heading 是绕惯性坐标系y轴的旋转很。因为这里的旋转是在物体坐标系y轴和惯性坐标系y轴重合时进行的,所以这个区别并不重要。

    任意三个轴都能作为旋转轴,不一定必须是笛卡尔轴,但使用笛卡尔轴最有意义。

    决定每个旋转的正方向时不一定必须遵守左手或右手法则。例如可以定义pitch的正方向是向上的,并且这种定义方法非常常见。

     也是最重要的,旋转可以以不同的顺序进行。顺序并不重要。任何系统都能用来定义一个方位,但heading--pitch--bank 顺序最为实用。heading 度量绕竖直轴的旋转,它之所以有意义主要是因为我们所在的环境常有某种形式的”地面“。一般来讲绕惯性坐标系的X或Z轴的旋转没有什么意义。heading--pitch--bank 顺序下的另外两个角的意义是:pitch 度量水平方向的倾角,bank度量的是绕Z轴的旋转量。

欧拉角的优点:

    欧拉角对我们来说很容易使用。它比矩阵和四元数简单得多,这可能是因为欧拉角中的数都是角度,符合人们思考方位的方式。如果我们选择了与所要处理的情况最符合的约定,那么就能直接描述出最重要的角度,例如heading--pitch--bank 系统就能直接地描述出偏差角度。便于使用是其最大的优点。当需要显示方位或用键盘输入方位时,欧拉角是惟一的选择。

    最简洁的表达方式。欧拉。角用三个数来表达方位。在3D中,表达方位不能少于三个数。如果要考虑内存因素,欧拉角是最合适的描述方位的方

    任意三个数都是合法的。取任意三个数,它们都能构成合法的欧拉角,而且可以把它看成一个对方位的描述。从另一方面说,没有”不合法“的欧拉角。当然,数值可能不对,但至少它们是合法的。可矩阵和四元素就不一样了。

欧拉角的缺点:

    用欧拉表达 方位时的缺点主要有:

     给定方位的表达方式不唯一

     两个角度间求插值非常困难

小结:

    欧拉角使用三个角度来保存方位。这三个角度是绕三个互相垂直轴的有顺序的旋转量。

    最常用的欧拉角系统是heading--pitch--bank

    在多数情况下,欧拉角比其他方法更适合于使用

    当内存空间很宝贵时,欧拉角会使用最少的空间来保存3D方位

    没有”不合法“的欧拉角,任意三个数组成的欧拉角都是有意义的。

    欧拉角存在别名问题。这是由于角度天生的周期性和旋转之间的不独立性导致的。

    使用限制欧拉角能简化很多基本问题。让一个欧拉角处于限制集里的意思是指heading 和 bank在-180到+180之间,pitch在-90到+90之间。如果pitch为+-90,则bank为零。

     当pitch等于+-90时,就会产生方向锁问题。在这种情况下,自由度减少一个,因为heading和bank的旋转轴都是数值轴。

    在两个欧拉角表示的方位间插值存在着一些问题。简单的别名问题虽然讨厌,但是可以解决。而方向锁是一个底层问题,至今没有简单的解决方案。

原创粉丝点击