欧拉角万向节死锁(从定义下手理解)

这个万向节死锁困扰了我好几天,查遍了网络上的博客,基本都是通过一个陀螺仪来讲解。这种讲解方式忽略了很重要的一点,让人难以理解,看我讲解。

欧拉角有两种 

静态的,静态是世界坐标旋转不会有死锁的情况。

动态的,自身坐标随物体旋转而改变

从动态欧拉角我做了很多次测试发现并不能死锁,所以我从定义下手。

首先需要知道什么是一次欧拉旋转,不是某个轴旋转,而是沿着三个轴都旋转结束后称为一次欧拉旋转,我们想象一下,一个物体沿着y轴旋转45°,那这个物体的x轴和z轴是也跟着旋转吗?定义中的(自身坐标随物体旋转而改变)是针对一个欧拉旋转,并不是

绕某个轴旋转自身坐标也跟着旋转,所以x轴和z轴是不动的,继续绕x轴旋转90°,那么此时y轴要跟着旋转吗?答案是要的因为我们之后的轴旋转已经不涉及到y轴的旋转了,动态欧拉角是旋转过的轴需要随物体旋转而改变,未旋转的轴不能改变。继续绕z轴旋转0°,那现在我们自身的坐标轴就在一个二维平面里面了(y轴和z轴是平行的),x轴垂直与这两个轴,这中情况就是万向节死锁了。

下面从定义总结一下动态的欧拉旋转

1 三个轴全部旋转完毕是一次欧拉旋转

2 未旋转的轴不跟随当前旋转而旋转,旋转过的轴跟着当前旋转而旋转

3 欧拉旋转结果跟xyz轴旋转的顺序有关(unity定义的旋转顺序是yzx)

4 当两个轴平行的时候会产生万向节死锁(无法旋转到某个位置)

小伙伴有问题请评论

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页