Bonjour,
Existe-t'il une matrice de passage pour ces 2 équations :
x = 64*x' + (y'%2)*32
y = y'*16
C'est le modulo 2 qui m'embète ...
Je vous remercie d'avance pour votre aide.
En faite c'est pour une gestion de l'affichage dans un petit jeu vidéo. Pour pouvoir passer de mon tableau à 2 dimensions qui correspondent aux cases du jeux à leur affichage à l'écran.
On représente chaque case sous la forme d'un losange car pour obtenir un "simili de perspective" on va faire une rotation de notre case de 45° puis on divise par 2 la hauteur comme sur le schéma.
Ensuite avec ces "losanges" je doit fabriquer ma carte , il y a deux dispotions principales différentes , la première une carte en forme de losange et la deuxième rectangulaire, comme vous pouvez le voir sur les images.
Maintenant si je prend la carte en forme de losange si je place le (0,0) de mon tableau à deux dimensions dans le coin supérieur nord , l'axe x vers le sud-est et l'axe y vers le sud-ouest. Pour passer de mon tableau à 2 dimensions j'obtiens les equations suivantes :
PosXEcran = (xDuTableau - yDuTableau ) * largeurDuLosange/2
PosYEcran = (xDuTableau + yDuTableau ) * hauteurDuLosange/2
Si on prend des losanges avec 64 pixels de largeur et 32 pixels de hauteur ca nous donne :
PosXEcran = 32*xDuTableau -32*yDuTableau
PosYEcran = 16*xDuTableau + 16*yDuTableau
Donc la matrice de passage est :
A=[ 32, -32
16, 16]
Ce qui me permet facilement de postionner mes "petits losanges" et quand je veux retrouver la case correspondant à la position de ma souris j'utilise la matrice inverse:
A-1=[16/1024, 32/1024,
-16/1024, 32/1024]
Alors ça c'est pour la carte en losage , mais moi je voudrais utiliser le même principe mais pour une carte "rectangulaire" , ce qui nous donne les équations suivantes:
PosXEcran = xDuTableau * largeurDuLosange + (yDuTableau modulo 2) * largeurDuLosange/2
PosYEcran = yDuTableau * (hauteurDuLosange/2)
soit les equations données au début du post:
X = 64*X' + (Y' modulo 2)*32
Y = Y'*16
Es que c'est possible ? Et si oui comment faire avec ce modulo 2 ?
Il sert à savoir si on est sur ligne pair ou impair.
Voila j'espère avoir été plus clair.
le plus simple est peut etre d'ecrire deux systemes un pour les pairs et un pour les impairs et de resoudre chacun des deux systemes en inversant chacune des deux matrices ou plus simplement avec la methode de gauss
Oui les * correspondent à "multiplier". J'avais pas fait attention en bas on peut mettre des symbôles oups... Alors est équivalent à *
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :