這裏有兩個不同的代碼片段困惑操作的順序使用XNA矩陣時,C#
這是我開始與
Vector2 hold = Vector2.Transform(pos1, mat1);
Matrix inv = Matrix.Invert(mat2);
Vector2 pos2 = Vector2.Transform(hold, inv);
這就是我說的是簡化版本
Matrix matrix1to2 = mat1 * Matrix.Invert(mat2);
Vector2 pos2 = Vector2.Transform(pos1, matrix1to2);
我不明白的是,爲什麼不在simpilifed版本的第一行
Matrix matrix1to2 = Matrix.Invert(mat2)*mat1;
由於矩陣順序將生效,第一,在我們有MAT1原來正確的事情乘以在第一
編輯: 下圖顯示了操作順序所需
http://www.riemers.net/images/Tutorials/XNA/Csharp/Series2D/mat1.png
本教程指出要創建您使用的轉換;
Matrix carriageMat = Matrix.CreateTranslation(0, -carriage.Height, 0) * Matrix.CreateScale(playerScaling)
* Matrix.CreateTranslation(xPos, yPos, 0) * Matrix.Identity;
爲什麼這個工作如果順序是從左到右?
我認爲這是一個http://gamedev.stackexchange.com/問題。你會有更多的反饋。 – rcdmk 2012-01-29 19:11:18
謝謝,我會嘗試。我應該關閉它嗎? – Alxander 2012-01-29 19:13:07
如果你想。 Probaly一些版主會在這裏。 – rcdmk 2012-01-29 19:15:02