Qui ci sono due diversi pezzi di codiceConfuso su ordine delle operazioni quando si utilizza una matrice in XNA, C#
Questo è quello che ho iniziato con
Vector2 hold = Vector2.Transform(pos1, mat1);
Matrix inv = Matrix.Invert(mat2);
Vector2 pos2 = Vector2.Transform(hold, inv);
E questo è quello che mi hanno detto è il versione semplificata
Matrix matrix1to2 = mat1 * Matrix.Invert(mat2);
Vector2 pos2 = Vector2.Transform(pos1, matrix1to2);
Quello che non capisco è, perché non è la prima linea nella versione simpilifed
Matrix matrix1to2 = Matrix.Invert(mat2)*mat1;
Dal momento che per la matrice cosa sulla destra diventeranno applicabili prima e nell'originale abbiamo mat1 essendo moltiplicata in primo
Edit: L'immagine seguente mostra la sequenza delle operazioni desiderate
http://www.riemers.net/images/Tutorials/XNA/Csharp/Series2D/mat1.png
Il tutorial dice che per creare questa trasformazione si usa;
Matrix carriageMat = Matrix.CreateTranslation(0, -carriage.Height, 0) * Matrix.CreateScale(playerScaling)
* Matrix.CreateTranslation(xPos, yPos, 0) * Matrix.Identity;
Perché funziona se l'ordine è da sinistra a destra?
Penso che questa sia una domanda http://gamedev.stackexchange.com/. Avrai più feedback lì. – rcdmk
Grazie, ci proverò. Dovrei chiudere questo allora? – Alxander
Se vuoi. Proibisci alcuni moderatori verranno a questo. – rcdmk