2009-05-22 70 views
5

在我的3D應用程序中,我將對象的位置存儲在向量中,並且它圍繞四元數的原點進行旋轉。我需要圍繞一個具有任意原點的矢量旋轉對象。我嘗試將位置 - vectorOrigin和旋轉轉換爲矩陣,旋轉矩陣,然後將矩陣的位置和旋轉作爲矢量和四元數提取出來。位置正常,但旋轉保持不變(對象圍繞給定矢量旋轉,但始終朝向同一方向)。如何使用四元數在一個點周圍旋轉物體?

我的方法錯了還是有錯誤?

回答

7

我不確定你爲什麼期望輪換改變。你有程序化的「生物」代表原點,目標點和旋轉。根據其他兩個「生物」計算目標點不應該影響它們。

通常的做法如何?如果需要旋轉點(a,b,c)周圍的位置(x,y,z),請首先平移位置以便旋轉將圍繞原點:使用(xa,yb,zc)作爲位置,像往常一樣圍繞原點旋轉以獲得新的平移位置(x'-a,y'-b,z'-c),然後轉回並獲取新的位置(x',y',z')。

+0

這就是我正在做的。對象圍繞具有任意原點的矢量移動,但始終朝向相同的方向。我應該面對矢量的起源。 我編輯了這個問題來澄清我的算法。 – user17544 2009-05-22 18:43:06

+0

如果我理解正確,您需要添加另一個旋轉,圍繞一個與您所提到的平行的向量平行移動,但是它會穿過對象的* center *。 – 2009-05-22 19:18:15

1

我對四元數不熟悉,也許這是完全偏離主題的,但不能圍繞一個點旋轉3d對象,旋轉軸必須是一條線。