Page 1 sur 1

Point sur un disque et marquage d'un angle droit

Posté : lun. 24 sept. 2018, 19:25
par Fabrice
Bonsoir,
Asymptote ce n'est pas tout à fait comme le vélo, car j'ai beaucoup oublié !
Le but est de reproduire la figure jointe en image. Mon soucis est double : l'angle droit et le rayon du disque de couleur orange. En effet, je ne sais pas comment colorier un disque et donc, j'ai choisi de colorier un arc. Seulement, le point ne se trouve pas sur l'arc.

Figure asymptote bb8b69ca8a2f0a42da96b7055e310638
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import geometry;
  2. unitsize(0.8cm,0);
  3. point A=(4,0);
  4. point B=(8,0);
  5. point C=(4,-4);
  6. point D=(-3,0);
  7. point E=(3*cos(65),3*sin(65));
  8. filldraw(arc(A,4,0,270)--C--A--B--cycle,green,black+1.5bp);
  9. filldraw(arc(D,3,0,360)--cycle,orange,black+1bp);
  10. dot(D);
  11. draw(D--E);
  12. distance("4 cm",A,B);
  13. distance("4 cm",A,C);

Merci.
Fabrice
http://image.noelshack.com/fichiers/201 ... -0712.jpg

Re: Point sur un disque et marquage d'un angle droit

Posté : lun. 24 sept. 2018, 20:35
par GM
Bonsoir Fabrice,

le problème est que tu as oublié de définir ton point E à l'aide de D et oublié que les angles sont en radians.
Comme E est une variable déjà définie par défaut dans Asymptote pour définir l'EST, je l'ai remplacé.
J'ai utilisé aussi unitcircle pour le cercle.

Figure asymptote fce96f85df20acd0d39eb02d28b88695
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import geometry;
  2. unitsize(0.8cm,0);
  3. point A=(4,0);
  4. point B=(8,0);
  5. point C=(4,-4);
  6. point D=(-3,0);
  7. real rayon = 3;
  8. real theta = pi/3;
  9. point M= D+(rayon*cos(theta),rayon*sin(theta));
  10. path cercle = shift(D)*scale(rayon)*unitcircle;
  11. filldraw(arc(A,4,0,270)--C--A--B--cycle,green,black+1.5bp);
  12. filldraw(cercle,orange,black+1bp);
  13. dot(D);
  14. draw("$x$",D--M,Arrows);
  15. distance("4 cm",A,B);
  16. distance("4 cm",A,C);

Re: Point sur un disque et marquage d'un angle droit

Posté : lun. 24 sept. 2018, 22:18
par Fabrice
Bonsoir Gaetan,
Merci, je vais m'y remettre sérieusement car j'ai un peu délaissé au profit de TikZ.
Fabrice

Re: Point sur un disque et marquage d'un angle droit

Posté : mer. 26 sept. 2018, 09:30
par Fabrice
Bonjour Gaetan,
Encore une petite question sur ce code : est-il possible avec la routine distance() de n'avoir que le texte ("4 cm") ?
Merci.
Fabrice

Re: Point sur un disque et marquage d'un angle droit

Posté : mer. 26 sept. 2018, 14:33
par GM
Fabrice a écrit :
mer. 26 sept. 2018, 09:30
Bonjour Gaetan,
Encore une petite question sur ce code : est-il possible avec la routine distance() de n'avoir que le texte ("4 cm") ?
Merci.
Fabrice
Bonjour,

Après un petit tour dans geometry.asy pour vérifier la signature de la fonction distance

Code : Tout sélectionner

void distance(picture pic = currentpicture, Label L = "", point A, point B,
              bool rotated = true, real offset = 3mm,
              pen p = currentpen, pen joinpen = invisible,
              arrowbar arrow = Arrows(NoFill))
j'ai tenté cela avec succès :

Code : Tout sélectionner

distance(Label("4 cm",blue),A,C, p=invisible);

Re: Point sur un disque et marquage d'un angle droit

Posté : mer. 26 sept. 2018, 16:44
par Fabrice
Bonjour Gaetan,
Merci pour l'aide apportée. J'en ai profité pour parcourir un peu la documentation afin d'y ajouter un angle droit. Pour être complet, je souhaiterais, si possible, remplacer le point par une croix.
Fabrice

Figure asymptote c985db7628e1852df9c42120b85692d3
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import geometry;
  2. unitsize(0.8cm,0);
  3. point A=(4,0);
  4. point B=(8,0);
  5. point C=(4,-4);
  6. point D=(-3,0);
  7. real rayon = 3;
  8. real theta = pi/3;
  9. point M= D+(rayon*cos(theta),rayon*sin(theta));
  10. path cercle = shift(D)*scale(rayon)*unitcircle;
  11. line AB=line(A,B);
  12. line AC=line(A,C);
  13. perpendicularmark(AB,AC, quarter=4,size=0.4cm, Fill(paleblue));
  14. filldraw(arc(A,4,0,270)--C--A--B--cycle,green,black+1.5bp);
  15. filldraw(cercle,orange,black+1bp);
  16. dot(D);
  17. draw("$x$",D--M,Arrows);
  18. distance(Label("4 cm",black),A,B, p=invisible);
  19. distance(Label("4 cm",black),C,A, p=invisible);
  20.  

Re: Point sur un disque et marquage d'un angle droit

Posté : mer. 26 sept. 2018, 18:21
par GM
Une source d'inspiration :

Figure asymptote 2d9c8f278344901b6e30cab246ee2052
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. marker croix1=marker(scale(2)*cross(4),1bp+blue);
  2. marker croix2=marker(scale(2)*rotate(45)*cross(4),1bp+red);
  3.  
  4. import geometry;
  5. unitsize(0.8cm,0);
  6. point A=(4,0);
  7. point B=(8,0);
  8. point C=(4,-4);
  9. point D=(-3,0);
  10. real rayon = 3;
  11. real theta = pi/3;
  12. point M= D+(rayon*cos(theta),rayon*sin(theta));
  13. path cercle = shift(D)*scale(rayon)*unitcircle;
  14. line AB=line(A,B);
  15. line AC=line(A,C);
  16. perpendicularmark(AB,AC, quarter=4,size=0.4cm, Fill(paleblue));
  17. filldraw(arc(A,4,0,270)--C--A--B--cycle,green,black+1.5bp);
  18. filldraw(cercle,orange,black+1bp);
  19. draw(D,croix2);
  20. draw(M,croix1);
  21. draw("$x$",D--M,Arrows);
  22. // distance(Label("4 cm",black),A,B, p=invisible);
  23. // distance(Label("4 cm",black),C,A, p=invisible);
  24. draw(Label("4 cm",Relative(.5),align=RightSide),segment(AB));
  25. draw(Label("4 cm",Relative(.5),align=LeftSide),segment(AC));


A noter que si tu n'utilises pas les flèches et lignes de rappel pour les cotations, alors tu peux te passer de distance comme ci-dessus.

Re: Point sur un disque et marquage d'un angle droit

Posté : mer. 26 sept. 2018, 19:03
par Fabrice
Re,
Merci beaucoup.
Fabrice