2011-06-12 173 views
0

我想弄明白如何在一些示例問題中翻譯/移動任意座標系。它給我頭痛..圍繞任意軸旋轉和平移

好吧,所以我有一個坦克在點Q坐在一個普通的N平面上。我想旋轉它(就地),說30 degress到它的權利,並將其移動K單位向前。我有點想出如何任意旋轉的作品,但我不太清楚,如果我得到這個正確的。

說坦克位置是用3x3 M矩陣定義的。

所以在空間任意旋轉,我會做這樣的事情:

M =(Q^-1)(RX表示^ -1)(RY^-1)(RZ)(RY)(Rx)的(Q)

,其中在圍繞z軸

-30℃下RZ =旋轉這是正確?

但是現在我也想沿着它的新方向移動它K個單位。所以我必須在那裏添加一個翻譯矩陣。我認爲它應該在Rz之前(不確定)

M =(Q^-1)(Rx^-1)(Ry^-1)(Tk)(Rz)(Ry)(Rx)(Q)

這是否正確?或者我錯了?任何數學天才在那裏?

謝謝:)

+0

你最終找到一個解決方案?用 – 2013-03-08 05:26:35

+0

來編寫表達式的程序和語言。查找旋轉矩陣。或者,如果您的語言支持複數,請學習如何乘以模數1的向量。 – 2013-12-04 02:27:57

回答

0

什麼是您的programmation的語言?我認爲你可以找到一個圖書館,讓你可以輕鬆地做到這一點。以C++中的openCL爲例。很多3D庫已經存在,這是一個非常有用的時間來使用它們。

+0

即時通訊設法瞭解此背後的數學 – 2011-06-12 05:04:34

+0

對不起,我不能幫你數學 – anbuf 2011-06-12 05:21:50

0

如果你想要新的坦克位置,我可以提供幫助。我一直在做類似的事情,我也有一些時間這樣做。如果你用3D做這個,那麼你可以將它應用到坦克的每個座標上。

首先,您需要假設坦克是世界的中心,即本地座標。 然後,你需要移動它轉發K單元,所以它是在(0,K)

然後,你需要使用矩陣把通過θ的點(以弧度爲單位),併產生:

newX = (x*math.cos(θ))-(y*math.sin(θ)) 
newY = (x*math.sin(θ))+(y*math.cos(θ)) 

(從我使用自己的代碼,所以我知道它的工作原理)