欧拉角和万向节死锁
万向节死锁
使用欧拉角会有万向节死锁的问题。
首先要先确定的就是欧拉角的确是能正确标识一个旋转的,无论有没有出现万向节死锁。
那万向节死锁到底会导致什么问题呢?
当我们要在两个欧拉角之间进行插值的时候就会出现问题了。你可以想象一个情况(也可以看这个视频,我也只是把里面说的用自己的文字描述而已:万向节死锁):当你对一个箭头进行欧拉旋转(这个旋转的顺序是yxz)的时候,当x旋转90度之后,会发现,y轴和z轴重叠了,然后你会发现转动y轴和z轴都是在同一个方向上旋转,就相当于你失去了一个旋转轴一样。这时候就是在万向节死锁当中了,而当在这种情况下,你想从这个角度把箭头沿着垂直于z轴的方向旋转,你会发现用按照yxz轴旋转的顺序做不到了。无论你怎么做都得不到一个能把箭头垂直y轴旋转的插值动画,而是会得到一个很奇怪的从当前欧拉角到目标欧拉角的一个奇怪的插值动画。
解决办法
使用矩阵旋转或者四元数旋转代替欧拉旋转