14-10-2010, 10:55 PM
(Modification du message : 14-10-2010, 11:07 PM par Thêta Tau Tau.)
Il s'agit d'un "simple" problème de changement de répère d'un vecteur (niveau term S je crois).
(par contre j'y connait rien en flash, je t'explique que le côté mathématique).
La position de la souris est un vecteur S=(X,Y) dans un repère orthonormé, de vecteurs I=(1,0) et J=(0,1) (en pixel). Pour simplifier prends la même origine pour les deux repères (si le point (0,0) de ta carte est (200,300) par exemple, X=xsouris-200, Y=ysouris-300).
Tu doit mesurer les vecteurs définissant le repère de ta carte (sous paint, je trouve i=(32,16) et j=(-32,16) avec l'image que t'as filé).
On appelle s=(x,y) (en minuscule) les coordonnées de ta souris dans le repère de la carte.
Tu as (je détaille pas, je passe par une inversion de matrice):
x=X/(2x32)+Y/(2x16)
y=-X/(2x32)+Y/(2x16)
Après t'as plus qu'à arrondir en dessous et t'as tes coordonées (vérifie quand même mon 32x16).
Je sais pas s'y j'ai été clair, demande moi sinon (ou a google mais quand j'ai cherché il m'a sorti du calcul matriciel)
fonction en php :
(par contre j'y connait rien en flash, je t'explique que le côté mathématique).
La position de la souris est un vecteur S=(X,Y) dans un repère orthonormé, de vecteurs I=(1,0) et J=(0,1) (en pixel). Pour simplifier prends la même origine pour les deux repères (si le point (0,0) de ta carte est (200,300) par exemple, X=xsouris-200, Y=ysouris-300).
Tu doit mesurer les vecteurs définissant le repère de ta carte (sous paint, je trouve i=(32,16) et j=(-32,16) avec l'image que t'as filé).
On appelle s=(x,y) (en minuscule) les coordonnées de ta souris dans le repère de la carte.
Tu as (je détaille pas, je passe par une inversion de matrice):
x=X/(2x32)+Y/(2x16)
y=-X/(2x32)+Y/(2x16)
Après t'as plus qu'à arrondir en dessous et t'as tes coordonées (vérifie quand même mon 32x16).
Je sais pas s'y j'ai été clair, demande moi sinon (ou a google mais quand j'ai cherché il m'a sorti du calcul matriciel)
fonction en php :
function convertir($X,$Y)
{
$x=floor($X/(2*32)+$Y/(2*16));
$y=floor(-$X/(2*32)+$Y/(2*16));
return array($x,$y);
}