2011-04-07 280 views
12

我有2個旋轉矩陣之間的插值(讓我們稱之爲A和B),其中:旋轉矩陣

A = 1 0 0 
    0 0 -1 
    0 1 0 

B = -1 0 0 
    0 0 -1 
    0 -1 0 

這基本上是在相機打轉看旋轉在它後面。 顯然,我不能直接插入矩陣中的值,因爲它看起來很奇怪。 我曾嘗試將矩陣轉換爲歐拉角,產生2組X,Y,Z角度,並嘗試根據X,Y,Z角度的每個分量之間的最小距離確定使用哪個角度。這肯定會導致我想要的旋轉類型,但我想不出一種體面的方式來確定在哪個角度之間進行插值,因爲有時導致最小誤差的角度集導致圍繞錯誤軸/軸的旋轉。 我也試過四元數,但基本上給了我相同的結果。任何人都可以將我指向正確的方向嗎?

回答

9

我的個人意見是,使用四元數這種類型的事情更有意義。這就是說,你可以做到這一點,而不使用四元數。

需要注意的一點是,「差異化」矩陣,即,這需要「方向」 A爲「方向」 B矩陣可以通過T = A.tranpose() * B計算(考慮你是乘在右邊)。一旦你有了旋轉矩陣T,你可以轉換爲軸角表示(例如參見http://en.wikipedia.org/wiki/Axis-angle_representation)。

最後,由於要知道的旋轉軸這需要AB,可以線性插入從零角度先前從T計算的角度。

這相當於使用SLERP。