天天看點

土圭垚㙓數學課(一)萬向鎖(Gimbal Lock)

何為萬向鎖,我們先抛棄掉那些理論,直接舉個栗子。

土圭垚㙓數學課(一)萬向鎖(Gimbal Lock)

以你自身為對象。

首先,原地旋轉為第一個次元,也就是heading。

其次,正翻跟頭為第二個次元,也就是pitch。

然後,側翻跟頭為第三個次元,也就是bank。

這就是歐拉角的三個旋轉次元,這三個是有順序的,首先是原地旋轉,然後是正翻跟頭,最後是側翻跟頭。

當然這些都是沒有位移的。

假設你一開始是朝北站立,這就是你:

土圭垚㙓數學課(一)萬向鎖(Gimbal Lock)

那麼開始旋轉了。

先順時針原地旋轉(heading)45度,這時候你朝東北站立。

土圭垚㙓數學課(一)萬向鎖(Gimbal Lock)

然後正翻跟頭(pitch)90度,這時候你克服了地心引力,頭朝東北面朝下懸浮。

土圭垚㙓數學課(一)萬向鎖(Gimbal Lock)

那麼這一波旋轉就結束了。

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

土圭垚㙓數學課(一)萬向鎖(Gimbal Lock)

這一次先正翻跟頭(pitch)90度,你就當你是Superman(特意為你加了紅褲衩),頭朝北面朝下懸浮。

土圭垚㙓數學課(一)萬向鎖(Gimbal Lock)

然後再順時針側翻跟頭(bank)45度,這時候你居然還是頭朝東北面朝下懸浮。

土圭垚㙓數學課(一)萬向鎖(Gimbal Lock)

沒想到吧!

驚不驚喜?意不意外?刺不刺激?

舉完了土掉渣接地氣的例子,讓我們回歸到理論知識。

當pitch為±90°的時候,heading軸和bank軸是重合的,那麼在這種情況下,歐拉角的旋轉自由度便會減少一個,這也就是萬向鎖問題。

更多示例可以看維基百科Gimbal lock。(趁着還能看,趕緊看)

解決方案便是用四元數(Quaternion)表示方位(旋轉),我們會在下節課介紹四元數(如果有緣的話)。