Bonjour,
Je ne vois pas comment codés ce problème:
"Sachant que je connais que deux point d'un triangle (le centre et un sommet)
Je voudrai savoir comment faire pour tester si un point est dans ce triangle ou pas".
Merci de votre aide.
Version imprimable
Bonjour,
Je ne vois pas comment codés ce problème:
"Sachant que je connais que deux point d'un triangle (le centre et un sommet)
Je voudrai savoir comment faire pour tester si un point est dans ce triangle ou pas".
Merci de votre aide.
Merci d'avoir répondu assez rapidement c tres gentil
Merci encore
Cela n'est pas suffisant pour définir de façon unique un triangle et donc ne permet pas à fortiori de savoir si un point quelconque est situé dedans.Citation:
"Sachant que je connais que deux point d'un triangle (le centre et un sommet)
Je voudrai savoir comment faire pour tester si un point est dans ce triangle ou pas".
mais si je peux en deduire les deux autres sommet du triangle alors cela devrai etre bon
Si ton triangle a une particularité quelconque (rectangle, isocèle) ça peut être possible, sinon je vois mal comment tu peux y arriver.
mon triangle est equilatéral
Pour le côté C, pas le temps de refléchir, suis en pleins partiels ^^ Mais pour le côté mathématique, c'est facile:
Tu as le centre du triangle: C(x0, y0)
Un sommet: S1(x1, y1)
Les deux sommets qu'on cherche sont:
S2(x2, y2)
S3(x3, y3)
Tu peux utiliser les relations (là je parle de vecteurs):
S1C + S2C + S3C = 0
S1S2 + S2S3 + S3S1 = 0
|S1C| = |S2C| = |S3C|
A mon avis, à partir de là tu vas te retrouver avec des formules assez simples pour déduire les deux sommets manquants. De là, tu déduis les équations des trois droites qui limitent le triangle, et de là tu as des inégalités à tester sur les coordonnées du point.
merci beaucoup pour ton aide
On est donc dans le cas d'un triangle équilatéral ABC dont on connait le centre O (xo,yo) et un sommet A (xa,ya).
M (xm,ym) est le point qui doit être situé à l'intérieur ou à l'extérieur du triangle.
Les coordonnées des autres sommets B et C peuvent se déduire de celles de A par une rotation d'angle t autour du centre O avec t= (+/-)120°
- La première chose est de se ramener dans un système de coordonnées centrées sur O. Dans ce repère, on utilisera des majuscules et les coordonnées de O sont (0,0) ,celles de A (Xa = xa-xo, Ya = ya-yo), et celles du point M (Xm = xm-xo, Ym = ym-yo)
Alors on a (dans ce repère) les coordonnées des autres sommets :
-Il reste à trouver l'équation des droites joignant les sommets. Si P (X,Y) est un point de la droite joignant les sommets opposés à un sommet, disons A, alors on doit avoir (produit scalaire des vecteurs) :Code:
1
2
3
4
5 Xb = Xa*cos(t)-Ya*sin(t) = -Xa/2 - Ya*sqrt(3)/2 Yb = Xa*sin(t)+Ya*cos(t) = Xa*sqrt(3)/2 - Ya/2 et Xc = Xa*cos(t)-Ya*sin(t) = -Xa/2 + Ya*sqrt(3)/2 Yc = Xa*sin(t)+Ya*cos(t) = -Xa*sqrt(3)/2 - Ya/2
OP.OA = OH.OA où H est le milieu du coté opposé à A. C'est donc une constante. On a donc : OP.OA = -|OA|^2/2 qui donne l'équation de cette droite :- Il faut que le point M soit du même coté de cette droite que le point O, donc avoir F(M) du même signe que F(O). F(O) = (Xa^2+Ya^2)/2 est positif et il faut avoir :Code:
1
2
3 F(P) = Xa*X+Ya*Y+(Xa^2+Ya^2)/2 = 0 qui peut être aussi mise sous la forme : F(P) = Xa(X-Xa)+Ya(Y-Ya)+(3/2)(Xa^2+Ya^2) = 0
Il suffit d'appliquer ces formules cette fois pour le point B :Code:Xa(Xm-Xa)+Ya(Ym-Ya)+(3/2)(Xa^2+Ya^2) >=0
(-Xa/2 -Ya*sqrt(3)/2)*Xm + (Xa*sqrt(3)/2-Ya/2)*Ym + (Xa^2+Ya^2)/2 >=0
Xa*Xm + Ya*Ym - sqrt(3)(Xa*Ym - Xm*Ya) - (Xa^2 + Ya^2) <=0
et pour C :Code:Xa(Xm-Xa) + Ya(Ym-Ya) - sqrt(3)(Xa*Ym - Xm*Ya) <= 0
Ce sont les trois inégalités à satisfaire.Code:Xa(Xm-Xa) + Ya(Ym-Ya) + sqrt(3)(Xa*Ym - Xm*Ya) <= 0
Les deux dernières donnent :
Xa(Xm-Xa) + Ya(Ym-Ya) <= - sqrt(3)|Xa*Ym - Xm*Ya|
Au final, on doit avoir :
(si je ne me suis pas trompé!)Code:-(3/2)(Xa^2 + Ya^2) <= Xa(Xm-Xa) + Ya(Ym-Ya) <= - sqrt(3)|Xa*Ym - Xm*Ya|
Merci pour ton aide cela m'a beaucoup aidé. :ccool: