0
我不知道這是否是正確的地方問或不,因爲我想問的可能是基本原則(及其實施)而不是代碼特定的。我提前道歉。如何基於起源/世界空間與均勻矩陣的翻譯
目前,我試圖讓使用SDL & C++我自己的2D引擎用我有限的知識和生鏽的線性代數。我目前被困在轉換部分。我編寫了自己的向量和矩陣類(Vector2,Vector3,Matrix2x2,Matrix3x3)。並將Matrix3x3派生成一個Transform類來保存場景中對象的變換。所以,爲了得到位置,它來自這些x =元素[0] [2],y =元素[1] [2],而角度是從atan(元素[1] [0],元素[0] [ 0])。
現在假設我有此變換爲對象:
| 0.86602540378 -0.5 50 |
| 0.5 0.86602540378 -70 |
| 0 0 1 |
或者位置= 50,-70;旋轉= 30度。
現在,如果我有一個平移矩陣:
| 1 0 40 |
| 0 1 20 |
| 0 0 1 |
如何翻譯不是根據其旋轉的相對空間,但基於對世界/全球空間中的對象?因此,對象的最終變換將如下所示:
| 0.86602540378 -0.5 90 |
| 0.5 0.86602540378 -50 |
| 0 0 1 |
在此先感謝。
如果是這種情況,那麼翻譯矩陣將是我的對象的變換,而我的對象的變換將是翻譯matix,這不是我想要做的。我相信正確的方法應該是將旋轉矩陣乘以其逆(或轉置?我忘了),然後將其與我的平移矩陣相乘,並將其乘以旋轉矩陣。但是現在我以自己添加翻譯價值的方式解決了這個問題。 :P 無論如何,我想我會關閉這個問題,因爲我已經「稍微」解決了它。 Unelegantly。 :P – 2014-11-07 01:36:02
好吧,經過一段時間,你是絕對正確的。與左邊的變化相乘確實導致了全球變革。這是全局轉換對象的常用方法。我的(缺乏)矢量和矩陣知識在這一個中失敗了。謝謝。 – 2014-11-17 03:49:43