à suspecter aussi :
les tests de comparaison sur des flottants si ceux-ci sont le résultat de calculs...
(méfiez-vous de la propagation des erreurs...)
Version imprimable
tu as bien raison :ccool:
Ces 2 lignes
devraient être :Code:
1
2 if (p.X == e._orig().X && p.Y == e._orig().Y) return e; if (p.X == e.dest().X && p.Y == e.dest().Y) return e;
avec un ACCURACY vraisemblablement de 10-6 ou 10-8 au grand max..Code:
1
2
3
4 if ( (fabs((p.X -e._orig().X) < ACCURACY) && (fabs(p.Y-e._orig().Y) < ACCURACY) ) return e; if ( (fabs((p.X -e._dest().X) < ACCURACY) && (fabs(p.Y-e._dest().Y) < ACCURACY) ) return e;
Sauf qu'il n'y a volontairement pas de float/double dans mon implémentation. Ce sont des entiers int/long partout. :P
:aie::oops:
crac boum hue.. :cry:
ça nous apprendra à réagir sans lire tout le code :roll:
Désolé