DETECTION D'INTERSECTION

afad Messages postés 715 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 10 septembre 2009 - 5 févr. 2004 à 13:15
afad Messages postés 715 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 10 septembre 2009 - 10 févr. 2004 à 19:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/20143-detection-d-intersection

afad Messages postés 715 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 10 septembre 2009
10 févr. 2004 à 19:37
Oui effectivement, deux droites non parallèles ont forcément une intersection mais pour les segments tout dépend de la position des points d'ancrage par rapport au point d'intersection. (je me disais bien que tu me poserais cette question)

On a oublier un postulat pour ce cas de figure, en reprenant ma syntaxe, Un point X(a,b) est intersection de deux segments si et seulement si il répond à ma première condition (voir 3ème message) et si la valeur a est comprise dans l'intervalle [x1,x2] et [x3,x4] ou alors que la valeur b est comprise dans l'intervalle [y1,y2] et [y3,y4] (ça revient au même).

A partir de la, il faut déterminer 2 fonctions de droites par rapport aux quatres points de tes segments, déterminer le point d'intersection et enfin valider si une de ses coordonnées est bien dans l'intervalle définit.

Je te laisse cogiter sur le comment, même si c'est du niveau Brevet des collêges, c'est bien de réfléchir de tps en tps

A+
aFaD
bongawonga Messages postés 83 Date d'inscription lundi 12 janvier 2004 Statut Membre Dernière intervention 12 septembre 2004
10 févr. 2004 à 18:46
Afad toi, tu sais faire transpirer les gens du cerveau, aide moi

la fonction que tu m'a si généreusement offerte est bien celle que je cherchais mais pour les droites ça fonctionne mais pour les segements c'est pas la même paire de manche
les 3/4 des segments sont signialer comme intersection...normal

Alors j'ai tourner mon cerveau 7fois dans ma tête avant et je me suis dit...hum petit bonga, toi qui a balancé tes cours de maths, essaye donc de trouver une condition à ce théorème

Alors je considère 2segments
point A du segment 1: X1_a Y1_a
Point B du segment 1: X1_b et Y1_b

point A du segment 2: X2_a Y2_a
Point B du segment 2: X2_b et Y2_b

voià maintenant, Bonga a dit: à si le point A ou B est entre A et B alors il y une vrai intersection de segment....ça à l'aire juste

if ((X2_a > X1_a && X2_a < X1_b) or (X2_b > X1_a && X2_b < X1_b)) {
if ((Y2_a > Y1_a && Y2_a < Y1_b) or (Y2_b > Y1_a && Y2_b < Y1_b)) {
intersection!!!
}
}
ouais ben c'était trop beau c'est pas ça...
c'est pas gagnié....Afad ou un collègien je ne vous demande
un peu de pommade, car je me suis luxer le cerveau.
afad Messages postés 715 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 10 septembre 2009
5 févr. 2004 à 15:29
En gros, si t'avais eu 4 points A(x1,y1) B(x2,y2) C(x3,y3) et D(x4,y4). Pour tester l'intersection entre les droites AB et CD, un simple

if ((y2 - y1)/(x2 - x1) != (y4 - y3)/(x4 - x3)) {
trace("intersection");
}

aurait suffit, no comment !!!!!!!!!!! :)
afad Messages postés 715 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 10 septembre 2009
5 févr. 2004 à 15:18
Rappel, pour trouver un coeff directeur (a1) à partir de 2 points A(x1,y1) et B(x2,y2), il suffit de faire :

a1 = (y2 - y1)/(x2 - x1).

C'était pas très compliqué ;)
afad Messages postés 715 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 10 septembre 2009
5 févr. 2004 à 13:15
Salut, entre 2 droites :
y = (a1)x+b1
y = (a2)x+b2
Il y a intersection si tout simplement les coeffs directeurs a1 et a2 sont différents. si a1 = a2, les droites sont parallèles donc pas d'intersection.
A+
aFaD
Rejoignez-nous