Bonjour à tous, voilà : l'utilisateur entre les trois longueurs en cm d'un triangle.
Je voudrais tracer ce triangle (en mode graph).
Comme je débute, j'ai un peu de mal : tracer une ligne ok, mais un triangle...
Version imprimable
Bonjour à tous, voilà : l'utilisateur entre les trois longueurs en cm d'un triangle.
Je voudrais tracer ce triangle (en mode graph).
Comme je débute, j'ai un peu de mal : tracer une ligne ok, mais un triangle...
Bonjour !
A partir du moment où les coordonnées des sommets ont été calculées, il suffit de... dessiner trois lignes, comme dans l'exemple trouvé sur ce fil de discussion : http://www.developpez.net/forums/sho...light=triangle
;)
A moins que le problème réside dans le calcul des coordonnées ?
oui , je n'arrive pas a calculer les cordonnées du sommet.
y doit surment avoir une formules ...
apres relier les points ca je devrai y arrivai.
Bonjour,
Montre nous ce que tu as fait, on ne fera pas le travail à ta place.
D'autre part, donner les longueurs des 3 côtés d'un triangle pour le tracer risque de te poser un gros problème : il faut que les 3 valeurs entrées définissent effectivement un triangle, ce qui, en dehors des triangles équilatéraux, et de ceux dont les côtés sont des valeurs entières (comme le célèbre triplet 3,4,5), ou des triangles rectangle qui vérifient a^2 + b^2 = c^, qui sont aisément calculables, il faut les avoir calculés pour les connaître, et de plus, dans tous les cas, l'algorithme de vérification de la validité des valeurs risque d'échouer (sauf uniquement entiers), pour cause de précision de la représentation des valeurs dans un ordinateur.
Bonjour,
soit
On place par exemple le coté AB en horizontal avec :Code:c=|AB|, a=|BC| et b=|AC|
pour détermner les coord de C, on sait que :Code:Xa=0, Ya=0, Xb=c, Yb=0
ce qui donne (en mettant X=Xc et Y=Yc pour mieux identifier les inconnues) :Code:dist(C,A)=b et dist(C,B)=a
Je laisse la fin à vos bon soins :mouarf:Code:
1
2 sqr(X)+sqr(Y)=sqr(b) sqr(X-c)+sqr(Y)=sqr(a)
ca ne sert a rien que je montre mon prog puisque a part entrer les valeurs, determiné le plus grand(pr l'hypotenuse), je n'est rien d'autre.
ma logique est la suivante (HHuummHHumm) :
- c1,c2,hyp : sont entré par l'utilisateur.
- je met le plus grands des nombre ds l'hypotenuse .
- ensuite, pour tracer mon triangle, il me suffit de :
- tracer l'hypotenuse
- tracer un arc de cercle de rayon (c1) a partir du point
de depart de l'hypo
- tracer un autre arc de cercle de rayon (c2) a partir de la
fin de l'hypo
--> a ce stade j'ai un point d'intersection
mais comment avoir les cordonnées d'une intersection de deux arc ??
Moi c'est la que je but.
Voila, pour ce qui est du calcul d'erreur,je peut mettre une egalité au centième pres par exemple.
Merci pour tt ceux qui prennent le tps pour aider les autres.
C'est sur je ne veux pas d'une reponse toute faite, c'est avant tout pour apprendre que je me suis posé ce problème.
Je debute, merci de votre comprehension.
Bonjour,
bon je continue depuis :
Nota :SQR(r)=r * rCode:
1
2 sqr(X)+sqr(Y)=sqr(b) sqr(X-c)+sqr(Y)=sqr(a)Je laisse la fin à vos bon soins
d'où sauf erreur :
Je laisse la fin (détermination de Y) à vos bon soinsCode:
1
2
3 sqr(X)-sqr(X-c)=sqr(b)-sqr(a) ==> 2*X*c = sqr(b)-sqr(a)-sqr(c) ==> X=(sqr(b)-sqr(a)-sqr(c))/2*c
à mon avis pour dessiner un triangle il faut faire simple tu demande à l'utilisateur d'entrer les trois cordonnée des trois points(a,b,c) et puis aprés tu relies tes trois points sinon si tu demande juste à l'utilisateur d'entrer juste la taille en cm de chaque coté t'aura du mal à dessiner ton triangle et n'oublie pas que tu travail en pixel pas en centimetre et la conversion entre les deux est assez complexe (résolution de l'écran,pitch).
voici un petit code que j'ai travaillé il illustre ce que j'ai dit(il marche sous freepascal tu pe facilement l'adapter pour tp7)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Program triangle; uses crt,graph; var driver,mode:integer; ax,ay,bx,by,cx,cy:byte; begin write('veuillez entrer les trois cordon‚es'); read(ax); readln(ay); readln(bx); readln(by); readln(cx);readln(cy); driver:=vga;mode:=vgahi; initgraph(driver,mode,'triangle'); outtextxy(20,20,'Dessin du triagnle'); line(ax,ay,bx,by); setcolor(red); line(ax,ay,cx,cy); setcolor(green); line(bx,by,cx,cy); readln;readln; closegraph(); end.