本文讲解的欧拉角旋转顺序为x,y,z。对应矩阵为[z][y][x]。当y为90°时会引起死锁。
欧拉角插值问题分析。
答:事实1 . 单个欧拉角能够正确表示旋转无论死锁还是不死锁。但是当两个欧拉角插值的时候,由于死锁的存在,导致插值后的欧拉角表示的旋转与原始的两个欧拉角表示的旋转差异很大。
事实2. 一种旋转可以用多种欧拉角表示。例如,x角度为100,与x角度为460其实是一样的。X角度为-179其实和+179很接近。更有甚者,当出现死锁的时候,同一种旋转有无数种欧拉角表示。具体方法参照文章Computing Euler angles from a rotation matrix
事实4. 当欧拉角接近死锁的时候会引起抖动。例如48.5557 82.8384 48.0888以及 141.922 81.0177 142.027.这两个欧拉角其实非常相近,但是除了y角之外其余两个坐标差异比较大。因为两个欧拉角的y旋转角度都接近90°了,越靠近90°,y轴的微小变动就对xz两个角度影响非常大,所以进行插值的时候直接进行插值会引起抖动。例如上面的插值结果可能为5.23894 90.9103 5.05811,这个结果与上面两个原始角度所表达的方向都不一样。
欧拉角插值解决方法
答:1. 将需要插值的两个欧拉角转化成矩阵,再通过矩阵分解出所有可能的欧拉角,找出两个比较相近的欧拉角进行插值。用此种方法可能引起抖动,如