Bonjour, je cherche les formules de base permettant de passer de coordonnées x, y dans un écran à la position i,j de la case correspondante.
De nombreux sites offrent leur PROPRE solution et je ne trouve pas de formule générique.
A tout hasard je vous joins le code source provenant de mes diverses recherches :
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 //Dans un premier temps on va calculer la taille d'une tuile iso float iso_side = (float)(HAUTEUR_TUILE*sqrt(2)); //Point de départ en isométrique COORDONNEES i_start; i_start.x = this->origine_x+HAUTEUR_TUILE; i_start.y = this->origine_y; //On va rectifier les coordonnées par rapport à celles de départ de grille COORDONNEES temp; temp.x = x-i_start.x; temp.y = y-i_start.y; temp.y *= 2; //On va ensuite transposer les coordonnées en isométrique float temp_iso_x = (((float)temp.x)*(sqrt(2)/2)-((float)temp.y)*(-sqrt(2)/2)); float temp_iso_y = (((float)temp.x)*(-sqrt(2)/2)+((float)temp.y)*(sqrt(2)/2)); //Et en déduire les positions I/J correspondantes COORDONNEES pos; float pos_x = (temp_iso_x/iso_side); float pos_y = (temp_iso_y/iso_side); pos.x=round(pos_x); pos.y=floor(pos_y); //Enfin, on retourne le résultat trouvé return(pos);
P.S. : Si le sujet n'est pas bien placé, dites-le moi...
Partager