Bonjour,
J'ai donc deux points distincts, je dois calculer le point d'intersection avec le bord gauche de ma fenêtre (dimension définie au préalable), avec la médiatrice de ces deux points.
Merci de votre aide.
(je programme en X11)
Bonjour,
J'ai donc deux points distincts, je dois calculer le point d'intersection avec le bord gauche de ma fenêtre (dimension définie au préalable), avec la médiatrice de ces deux points.
Merci de votre aide.
(je programme en X11)
Montre-nous une ebauche de code pour qu'on puisse t'orienter. Sinon on peut toujours le calculer de cette facon :
Soit la droite d(x) qui passe par les points p1(x1, y1) et p2(x2, y2). Vu que c'est droite tout ce qu'il y a de plus classique, tu trouves l'equation puis apres tu calcules y2 pour x2 = 0.
Voici mon code : http://pastebin.com/u2VCQMKj
Le prototype est Sommet medGauche(Site* a,Site* b);
Je dois faire la même chose pour la droite le haut et le bas mais une fois que j'ai trouvé pour la gauche je pense que le reste est identique.
Le site correspond à un point et après je ne vois pas comment trouver l'intersection.
Merci à toi![]()
Si les deux points A et B ont pour coordonnées (xa,ya) et (xb,yb), alors la médiatrice correspondante, lieu des points equidistant des points A et B, a pour équation :
(x-xa)^2 + (y-ya)^2 = (x-xb)^2 + (y-yb)^2
Ce qui donne :
2x(xb-xa) + 2y(yb-ya) + xa^2-xb^2 + ya^2-yb^2 = 0
Merci pour la réponse mais ma question était de trouver l'intersection entre la médiatrice des deux points avec le bord gauche de ma fenêtre.
Ensuite je dois faire de même avec les autres bords.
Ba du coup tu rajoutes ton point dans l'equation de ta droite en donnant ton x (ou ton y selon le bord) pour obtenir les coordonnees de ton point.
Je ne sais pas quoi mettre comme coordonnées pour avoir l'intersection avec le bord gauche de ma fenêtre, du rectangle.
C'est ça la base de mon problème.
Un bout de ma fonction
De plus mon bord est une droite donc le x et y varie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sommet medGauche(site *a,site *b) { Sommet newSommet; newSommet.pa=a; newSommet.pb=b; newSommet.pc=NULL; newSommet.lieu.x = (equation bord gauche) newSommet.lieu.y = (equation bord gauche) }
Voici un exemple de mon code.
http://pastebin.com/twPpn2nf
Si ta fenêtre n'est pas exotique, elle est rectangulaire avec les bords correspondants à une valeur de x donnée, et y variant ou à une valeur de y donnée et x variant.
Par exemple, supposons que le coté gauche correspond à x= xg et y variant de ygmin à ygmax. Alors le point d'intersection (xi,yi) avec la médiatrice sera donné par
xi = xg
et yi tel que
2xg(xb-xa) + 2yi(yb-ya) + xa^2-xb^2 + ya^2-yb^2 = 0
Ce qui donne si yb != ya (la médiatrice n'est pas parallèle au coté)
yi = (yb+ya)/2 + (xb^2-xa^2)/2(yb-ya) - xg(xb-xa)/(yb-ya)
Il reste alors à vérifier que ce yi est compris entre la valeur minimum et la valeur maximum des y correspondant à ce coté, ygmin <= yi <= ygmax, pour vérifier que ce point d'intersection est bien sur la frontière de la fenêtre.
si yb==ya, la médiatrice est parallèle ou confondue au coté et il n'y a pas de points d'intersection ou il y en a une infinité.
Qia,
Tout ça est quand même de la géométrie élémentaire, un simple petit dessin et c'est résolu.![]()
Partager