土圭垚㙓数学课(一)万向锁(Gimbal Lock)

何为万向锁,我们先抛弃掉那些理论,直接举个栗子。


以你自身为对象。

首先,原地旋转为第一个维度,也就是heading。

其次,正翻跟头为第二个维度,也就是pitch。

然后,侧翻跟头为第三个维度,也就是bank。

这就是欧拉角的三个旋转维度,这三个是有顺序的,首先是原地旋转,然后是正翻跟头,最后是侧翻跟头。

当然这些都是没有位移的。

假设你一开始是朝北站立,这就是你:


那么开始旋转了。

先顺时针原地旋转(heading)45度,这时候你朝东北站立。


然后正翻跟头(pitch)90度,这时候你克服了地心引力,头朝东北面朝下悬浮。


那么这一波旋转就结束了。

重置你的位置,朝北站立。


这一次先正翻跟头(pitch)90度,你就当你是Superman(特意为你加了红裤衩),头朝北面朝下悬浮。


然后再顺时针侧翻跟头(bank)45度,这时候你居然还是头朝东北面朝下悬浮。


没想到吧!

惊不惊喜?意不意外?刺不刺激?


举完了土掉渣接地气的例子,让我们回归到理论知识。

当pitch为±90°的时候,heading轴和bank轴是重合的,那么在这种情况下,欧拉角的旋转自由度便会减少一个,这也就是万向锁问题。

更多示例可以看维基百科Gimbal lock(趁着还能看,赶紧看)

解决方案便是用四元数(Quaternion)表示方位(旋转),我们会在下节课介绍四元数(如果有缘的话)