万向节死锁_万向节死锁 gimbal lock

万向节死锁发生在欧拉角旋转中,当飞机或物体在特定状态下,旋转Y或Z轴效果相同,导致无法独立控制俯仰和倾斜。这种情况下,继续操作X轴可以解除死锁。在编程中,欧拉角旋转可能导致程序BUG,因为底层API不会检查死锁状况。Unity3D的YXZ旋转顺序示例显示,当X轴旋转90度后,Y和Z轴的旋转会导致死锁。理解并避免死锁关键在于掌握旋转顺序。
摘要由CSDN通过智能技术生成

,如下图一,把灰色箭头想象成是一架飞机,红,绿蓝三个圈看作是三个外围控制器,外圈带动所有里圈运动,里圈的运动不影响外圈。

1,首先,绕Y轴旋转(旋转绿圈),来确定前进的方向。这时红圈与蓝圈都跟着旋转。

2,然后,绕x轴旋转(旋转红圈),让飞机仰视或俯视。这时蓝圈跟着一起旋转,绿圈不动。

3,最后,绕z轴旋转(旋转蓝圈),让飞机左右倾斜。这时只有蓝圈在转,红绿圈不动。

经过这三个步骤,我们可以把飞机调整到任意想要的角度。这也是FPS相机中常用的 yaw, pitch, row三个操作。

在步骤2中,若旋转红圈过程中,恰巧旋转到了图二所示状态,然后进行步骤3时会发现,旋转蓝圈与绿圈效果一样。

也就是这种状态下,旋转Y或Z轴效果一样了,都只能使飞机左右倾斜,而不能再俯视或仰视(它只能头朝天),这下坏了,飞机操作失灵了,只能向上直冲。这就所谓的万向节死锁,gimbal lock.

可见,欧拉角旋转使用的是物体的局部坐标系,旋转过程是对局部坐标的三个轴X,Y,Z分别进行的旋转。

【所谓的死锁,仅是在一个操作单元,即XYZ组成的任意一个次序中出现了无法控制的现象,如上面飞机失灵的情况,我们可以继续操作X轴(红圈)来调整飞机的仰视和俯视,这时飞机又可以回到水平飞行的正常轨道上来了】

【但是&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值