Bonjour à toutes et à tous,
Je dois coder un programme traitant sur les polygones et l'une des fonctions est de retourner le point d'intersection de deux segments, si intersection il y a, ce qui va aussi m'être utile pour savoir si un point quelconque est à l'intérieur du polygone ou non.
A savoir que l'on définit un segment via deux points, les deux extrémités avec s1(x1,y1) et s2(x2,y2).
Cependant, pour retrouver le point d'intersection de deux segments je procède à la méthode suivant :
- Calcul de l'équation de la droite portant chacun des segments (y1 et y2)
- Calcul de y1 = y2 pour retrouver la valeur de x où les courbes se croisent
- Vérification de la présence de x sur les deux segments
Cependant j'ai un petit problème par rapport au droite parallèle à l'axe des X ou Y.
On est d'accord que si un segment est parallèle à l'axe des X (soit horizontal) :
- Lors du calcul du coefficient directeur, delta Y = 0, et donc dans y = ax+b, a=0
- Par conséquent l'équation de la droite est y = b
- Et donc peu n'importe quelle valeur de x, f(x)=b
Dans le cas où il s'agit d'un segment parallèle à l'axe des Y (soit vertical):
- Lors du calcul du coefficient directeur, dela X = 0, et donc dans y = ax+b, a=0
- Par conséquent l'équation de la droite n'est plus de la forme y = .. mais x = x1 (ou x2 sachant qu'ils sont égaux)
- Ainsi, comment retrouver f(x) à partir d'une quelconque valeur x ?!
Ceci me serai utile pour retrouver le point d'intersection de deux segments qui serai respectivement parallèle à l'axe des X et Y et par conséquent perpendiculaire.
Merci d'avance pour votre aide.
Bonjour,
tu as effectivement mis le doigt sur le cas particulier qui pose problème avec les équations réduites (de la forme y=ax+b)
En fait, pour être sur deux droites en même temps, il faut vérifier les deux equations. Si ces équations sont y=ax+b et y=cx+d, alors nécessairement, ax+b=cx+d, tu trouves x, et tu remplaces dans une des équations pour trouver y.
Dans le cas où tes équations sont y=ax+b et x=c, pas besoin de chercher x (tu l'as déjà, c'est forcément c !). Tu n'as plus qu'à remplacer dans la première équation pour trouver le y correspondant.
Enfin, dans le cas où les équations sont x=a et x=b (avec a b), il n'y a pas de solutions (x ne peut pas valoir à la fois a et b). Mais c'est normal, puisque les droites sont parallèles, et donc n'ont pas d'intersection...
Bon courage pour ton programme
Merci pour ta réponse, elle m'a un peu débloqué et j'ai réussi à créer ma fonction, pas comme je l'aurai souhaité mais ça marche correctement.
J'ai du étudié tout les cas où, une droite est oblique et l'autre horizontale, une droite est oblique et l'autre verticale, une droite est vertical et l'autre oblique ou encore si les deux sont obliques ..
J'ai donc pu finir ma fonction qui test si un point appartient à un polygone ou non.
Maintenant je souhaite tester la convexité d'un sommet. Après quelque recherche sur différent forum je suis tombé sur le post suivant :
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :