Comment savoir si des segments se croisent

Fermé
Jonathan - 1 janv. 2005 à 17:20
 Jonathan - 2 janv. 2005 à 09:28
Bonjour
Je programme un logiciel de dessin vectoriel spécifique à l'électronique.

J'ai besoin de vérifier si les segments (vecteurs) du dessin se croisent.
Pour ça j'avais une methode fiable mais beaucoup trop longue.
J'ai trouvé ça :
http://perso.3ie.org/yannick.lejeune/2004/05/comment-savoir-si-deux-segments-se.html
Mais malheureusment ça ne fonctionne pas bien, et je ne suis pas assez fort en math pour comprendre ce qui ne fonctionne pas.

Quelqu'un connait-il un algorithme éprouvé pour ce genre de fonction ?
Merci

2 réponses

salut,

étant donné que je suis pas spécialisé dans le domaine, et que j'ai la flemme de chercher plus longtemps (sachant que mes tests furent conluant), je suppose que les fonctions sur la page que tu as trouvé sont correctes. si ce n'est que d'après ce que j'ai compris il suffit de faire return (dx1 * dy2 - dy1 * dx2); plutot que return Math.Sign(dx1 * dy2 - dy1 * dx2); enfin je crois :/

bon alors quoi qui va pas plus précisément ?
0
En fait il y avait deux choses. L'une des deux etait simplement une erreur de frappe de ma part :-)
Part contre, l'autre, c'est quand 2 segments sont dans la prolongation l'un de l'autre, mais ne se croisent pas, alors l'algo renvoie "Oui", et quelque soit l'angle des segments.
Si je n'utilise pas la fontion Sign, alors l'algo renvoie encore plus de "oui" quand il n'y a pas lieu.
Je pense que quand les segments sont alignés, les 4 GetSigne renvoient 0 (zéro), et il s'agit alors d'un cas à traiter à part.

Merci
et…
bonne année !

mon programme par là :
http://www.epoxy.fr.st
0