Astroïde comme enveloppe de droites (mp-geom2d)
Auteur ou autrice : Jean-Michel Sarlat.
Mise en ligne le 19 mai 2025
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.