donc as-tu seulement changé la définition de a (de int en double) ou changé ta division entière pour en faire une division flottante ?
à ce qu'il me semble:
TRAIT : (35,22)-(84,32) donne a = 10 / 49 = 0 mais a = 10.0 / 49.0 = 0.204
Sylvain.
Effectivement, j'ai fait ceci :
a = ((double)(this.y1-this.y0))/((double)(this.x1-this.x0));
et désormais, a est bien différent de 0.
Merci encore. T.
Toto Le Ouf
tu devrais directement calculer la distance du point (x,y) à ta droite
(x0,y0;x1,y1) plutot que de calculer l'equation de ta droite (fixe) à chaque test.
Quelle est la formule qui me permettrait de calculer cette distance ?
pour une droite d'équation ax + by + c = 0, la distance d'un point M(x,y) à cette droite est:
d = abs( (ax + by + c) / sqrt(a² + b²))
tu travailles ici avec une équation réduite (y = a'x + b') (ie a=a'; b=-1; c=b'), donc tu calcules une fois pour toute (sauf déplacement) l'équation de ta droite:
double a = (double)(y1 - y0) / (double)(x1 - x1); double b = y0 - a * x0; double D = Math.sqrt(a * a + 1);
pour un point M(x,y), tu calcules
d = Math.abs((a * x - y + b) / D);
tes coords étant, j'imagine, des pixels, la distance d est le nombre de pixels à cette droite, donc un test (d <= 4) doit suffire.
Sylvain.
Tout fonctionne ou presque (d'autres problèmes mais différents)... Merci encore. A bientôt. T.
tu devrais directement calculer la distance du point (x,y) à ta droite
(x0,y0;x1,y1) plutot que de calculer l'equation de ta droite (fixe) à
chaque test.
Quelle est la formule qui me permettrait de calculer cette distance ?
pour une droite d'équation ax + by + c = 0, la distance d'un point
M(x,y) à cette droite est:
d = abs( (ax + by + c) / sqrt(a² + b²))
tu travailles ici avec une équation réduite (y = a'x + b') (ie a=a';
b=-1; c=b'), donc tu calcules une fois pour toute (sauf déplacement)
l'équation de ta droite:
double a = (double)(y1 - y0) / (double)(x1 - x1);
double b = y0 - a * x0;
double D = Math.sqrt(a * a + 1);
pour un point M(x,y), tu calcules
d = Math.abs((a * x - y + b) / D);
tes coords étant, j'imagine, des pixels, la distance d est le nombre de
pixels à cette droite, donc un test (d <= 4) doit suffire.
Sylvain.
Tout fonctionne ou presque (d'autres problèmes mais différents)...
Merci encore.
A bientôt.
T.
tu devrais directement calculer la distance du point (x,y) à ta droite
(x0,y0;x1,y1) plutot que de calculer l'equation de ta droite (fixe) à chaque test.
Quelle est la formule qui me permettrait de calculer cette distance ?
pour une droite d'équation ax + by + c = 0, la distance d'un point M(x,y) à cette droite est:
d = abs( (ax + by + c) / sqrt(a² + b²))
tu travailles ici avec une équation réduite (y = a'x + b') (ie a=a'; b=-1; c=b'), donc tu calcules une fois pour toute (sauf déplacement) l'équation de ta droite:
double a = (double)(y1 - y0) / (double)(x1 - x1); double b = y0 - a * x0; double D = Math.sqrt(a * a + 1);
pour un point M(x,y), tu calcules
d = Math.abs((a * x - y + b) / D);
tes coords étant, j'imagine, des pixels, la distance d est le nombre de pixels à cette droite, donc un test (d <= 4) doit suffire.
Sylvain.
Tout fonctionne ou presque (d'autres problèmes mais différents)... Merci encore. A bientôt. T.
Lambda
"Toto Le Ouf" wrote in message news:44660c10$0$20181$
Tout fonctionne ou presque (d'autres problèmes mais différents)... Merci encore. A bientôt. T.
Est-ce que les quelques problemes restants ne viendraient pas de la ligne d'apres dans ton code ?
"Toto Le Ouf" wrote in message news:4465ebf9$0$21282$
if(yTheo >= y-4 && yTheo >= y+4){
J'ai un peu peur que la, la premiere inegalite ne serve pas a grand chose...
"Toto Le Ouf" <thomas.carpentier@NOSPAMwanadoo.fr> wrote in message
news:44660c10$0$20181$8fcfb975@news.wanadoo.fr...
Tout fonctionne ou presque (d'autres problèmes mais différents)...
Merci encore.
A bientôt.
T.
Est-ce que les quelques problemes restants ne viendraient pas de la ligne
d'apres dans ton code ?
"Toto Le Ouf" <thomas.carpentier@NOSPAMwanadoo.fr> wrote in message
news:4465ebf9$0$21282$8fcfb975@news.wanadoo.fr...
if(yTheo >= y-4 && yTheo >= y+4){
J'ai un peu peur que la, la premiere inegalite ne serve pas a grand chose...