Vous devez déterminer la matrice de transformation des coordonnées de l'espace des tuiles aux coordonnées de l'espace de l'écran, puis calculer la matrice inverse pour cela, qui lorsqu'elle est appliquée aux coordonnées de l'espace de l'écran les transforme en coordonnées de l'espace des tuiles.
Soit dit en passant: votre décalage pointe en fait vers un endroit qui serait (0,0, 1,0) dans n'importe quel système de coordonnées sain, mais ce n'est pas un gros problème, juste quelque chose à garder à l'esprit. Cela signifie que le décalage de l'origine de votre système de coordonnées transformé est à (Offset + 32, 0).
Cas particulier
Ce que vous faites essentiellement pour transformer les coordonnées de l'espace de tuiles (a, b) en coordonnées d'écran (x, y), c'est de les exécuter à travers la matrice de transformation suivante:
Définitions: a et b pour la tuile (0, 0) sont dans la plage [0.0, 1.0) avec (0.0, 0.0) étant le coin supérieur, (1.0, 1.0) le coin inférieur, (0.0, 1.0) le coin gauche et (1.0, 0.0) le coin droit dans l'espace d'écran.
Nous étendons les définitions de coordonnées par une troisième coordonnée constante (c'est toujours exactement 1) pour pouvoir incorporer la traduction dans la matrice.
Vous pouvez maintenant créer la matrice inverse pour cette transformation. La formule de base est:
... avec C étant la matrice des cofacteurs pour A .
Dans votre cas, le déterminant | A | est toujours 1024, quel que soit le décalage, donc la matrice inverse est:
Exemple de calcul
Maintenant, pour vos données d'exemple ...
Mettez votre numéro de décalage dans la formule et vous obtenez:
La multiplication (105, 100, 1) (les coordonnées d'écran) avec la matrice vous donne:
Puisque la troisième coordonnée est toujours 1, nous n'avons pas à la calculer. Arrondissez au nombre entier le plus proche et vous obtenez (1, 4) comme coordonnées de votre espace de tuile, comme prévu.
Matrices de projection dimétrique générales
Si vous avez une perspective comme celle-ci, chaque tuile ayant une largeur de 2 w (64 dans l'exemple, donc w = 32) et 2 h de hauteur (32 dans l'exemple, donc h = 16), et le décalage du point d'origine dans l'espace d'écran étant f x et f y pour l'axe horizontal et vertical respectivement (192 et 0 dans l'exemple), les matrices ressemblent à ce qui suit.
Espace de tuile pour l'espace d'écran
Espace d'écran à l'espace de tuile