-
Message publié le mercredi 19 avril 2006 à 00 h 38 par atmaweapon. Atma
-
Salut à tous !
Je suis actuellement à la recherche d'un algo permettant de savoir si 2 segments (représentés tous deux par 2 points avec une coordonnée (x,y)) sont sécants (se croisent) ou non.
J'aimerais également une solution "optimisée" (avec le moins d'opérations possible)
Merci d'avance :)
Fred
-
Message publié le mercredi 19 avril 2006 à 09 h 27 par vikingforce. Le point de vue le plus simple est toujours le meilleur.[Charlie Chaplin]
-
bonjour a toi.....
demander comme ça, tu n'auras pas beaucoup de réponses, j'en ai bien peur.......
Est-ce un système que tu dois développer ou tu recherche juste un script tout fait ??
Ne le prend pas mal, mais le principe d'un forum c'est d'aider a réaliser et ce n'est pas une banque de données à script personnalisé....
La seule chance que tu puisse avoir, c'est qu'une autre personne ai déjà réalisé un script semblable a celui que tu recherche et qu'il mette sa source ici,
Si jamais tu veux développer la source........n'hésite pas a demander, mais personnellement, je n'ai pas d'exemple tout fait a te proposer et je n'ai pas le temps d'en créer un sur demande......surtout que je ne sais pas a quoi ca va te servir....alors que ça peux jouer dans la programmation du système..
-
Message publié le mercredi 19 avril 2006 à 13 h 29 par toutoufff. http://avionsdeligne.free.fr
-
avec tes deux points, tu dois calculer l'équation de droite des segments
puis voir pour quelles valeurs les coordonnées des points vérifient l'égalité des deux équation des segments.
une fois que tu as le point, il faut que tu t'assures qu'il appartient aux deux segments. Hé oui, les segments sont délimités et peuvent ne pas s'intercepter.
Bonne programmation
++
-
Message publié le mercredi 19 avril 2006 à 22 h 21 par gre. Attention : ce que je dis ne marche pas toujours !!!
-
J'ai la flemme d'écrire un vrai code, en plus je ne sais pas en quel langage tu le veux mais le principe (tes segments sont définis par (a,b),(c,d) et (e,f),(g,h)) :
- tu regardes si les droites sont parallèles <=> (a-c)(f-h)=(e-g)(b-d)
- sinon tu calcules leur intersection : l'équation de ta première droite est (y-a)*(d-b)=(x-b)*(c-a), pareil pour la deuxième et tu résous l'équation (à la main, tu tapes la solution sirectement dans ton programme !).
- tu regardes si l'intersection appartient aux 2 segments : (pour le premier) si on note (x0,y0) les coordonnées de l'intersection, (x0,y0) appartient au segment <=> min(a,c)<=x0<=max(a,c) et min(b,d)<=y0<=max(b,d).
Voilà il te reste plus qu'à programmer ça, ça devrait pas être bien compliqué !
Rq : pour le min(a,c)<=x0 (et les autres...) tu peux dire {a<=x0 ou c<=x0}