Astroïde comme enveloppe de droites (mp-geom2d)

Auteur ou autrice : Jean-Michel Sarlat.

Mise en ligne le 19 mai 2025

Image du résultat de l’exemple

mp-geom2d a été écrit avec le but de proposer des macros MetaPost permettant de réaliser une figure de géométrie en collant d’assez près à une description impérative :

  • Soit $A$ le point de coordonnées $(2,3)$.
  • Soit $B$ le point de coordonnées $(4,5)$.
  • Trace la droite $(A,B)$.
  • ...

Ici, on montre les exemples de la galerie de la documentation à la fois dans l’interface en français et celle en anglais.

Code


input geom2d;


labeloffset := 6;
gddU:=1.2cm;

vardef f(expr t) = 2*cos(t)*cos(t)*cos(t) enddef;
vardef g(expr t) = 2*sin(t)*sin(t)*sin(t) enddef;


beginfig(1);
 Repere(8,8,4,4,1.8,1.8);
 Axes; 
 Debut; 
  Graduations; Unites(1);
  drawoptions(withpen pencircle scaled 0.5 withcolor LightSlateGrey);
  trace ((-2,-2)--(-2,2)--(2,2)--(2,-2)--cycle);

  nb  = 80;
  pas = 2*Pi/nb;
  for i=0 upto nb: trace (0,2*sin(i*pas))--(2*cos(i*pas),0); endfor;

  fleche Segment((2,0),(1.2,0)) avecCrayon(1,RoyalBlue);
  fleche Segment((-2,0),(-1.2,0)) avecCrayon(1,RoyalBlue);
  fleche Segment((0,2),(0,1.2)) avecCrayon(1,RoyalBlue);
  fleche Segment((0,-2),(0,-1.2)) avecCrayon(1,RoyalBlue);

  trace Courbe(f,g,0,2*Pi,500) avecCrayon(1.5,DarkOrange);

  pointe Point(0,0);
  pointe Point(2,0);
  pointe Point(0,2);
  pointe Point(0,-2);
  pointe Point(-2,0);

 Fin;
endfig;
end

%%% English version

input geom2d;


labeloffset := 6;
gddU:=1.2cm;

vardef f(expr t) = 2*cos(t)*cos(t)*cos(t) enddef;
vardef g(expr t) = 2*sin(t)*sin(t)*sin(t) enddef;


beginfig(1);
 Frame(8,8,4,4,1.8,1.8);
 Axis; 
 gddBegin; 
  Graduations; Units(1);
  drawoptions(withpen pencircle scaled 0.5 withcolor LightSlateGrey);
  gddDraw ((-2,-2)--(-2,2)--(2,2)--(2,-2)--cycle);

  nb  = 80;
  pas = 2*Pi/nb;
  for i=0 upto nb: gddDraw (0,2*sin(i*pas))--(2*cos(i*pas),0); endfor;

  gddArrow Segment((2,0),(1.2,0)) withPen(1,RoyalBlue);
  gddArrow Segment((-2,0),(-1.2,0)) withPen(1,RoyalBlue);
  gddArrow Segment((0,2),(0,1.2)) withPen(1,RoyalBlue);
  gddArrow Segment((0,-2),(0,-1.2)) withPen(1,RoyalBlue);

  gddDraw Curve(f,g,0,2*Pi,500) withPen(1.5,DarkOrange);

  gddDrawPoint Point(0,0);
  gddDrawPoint Point(2,0);
  gddDrawPoint Point(0,2);
  gddDrawPoint Point(0,-2);
  gddDrawPoint Point(-2,0);

 gddEnd;
endfig;
end


Mots clés : géométriecourbeenvelopedroitemp-geom2d

Cet exemple fait partie de la collection d’exemples Documentation de mp-geom2d.

Fichiers

Télécharger l’archive complète