Dessins prédéfinis dans MetaPost
Les dessins prédéfinis du langage MetaPost sont peu nombreux et ne permettent que de dessiner des rectangles, des cercles et des partie de cercles.
Le rectangle : unitsquare
unitsquare est un raccourci pour le chemin :
(0,0) -- (1,0) -- (1,1) -- (0,1) -- cycle
Il dessine donc un carré de une unité de côté. Je te rappelle que l'unité par défaut de MetaPost est le point PostScript et vaut 0,352 mm, ce qui est très très petit. Donc pour l'utiliser tu dois le mettre à l'échelle :
\starttext
\startMPcode
draw unitsquare scaled 3cm;
fill unitsquare scaled 3cm shifted (4cm,0);
\stopMPcode
\stoptext
Pour avoir un rectangle il faut avoir une échelle des longueurs différente de celle des hauteurs :
\starttext
\startMPcode
draw unitsquare xscaled 3cm yscaled 1cm ;
fill unitsquare xscaled 3cm yscaled 1cm shifted (4cm,0);
\stopMPcode
\stoptext
Le cercle : fullcircle
fullcircle dessine un cercle de diamètre 1 unité centré en (0,0).
\starttext
\startMPcode
draw fullcircle scaled 3cm;
fill fullcircle scaled 3cm shifted (4cm,0);
\stopMPcode
\stoptext
Tu dessines des ovales avec une échelle des x différente de celle des y :
\starttext
\startMPcode
draw fullcircle xscaled 3cm yscaled 1cm ;
fill fullcircle xscaled 3cm yscaled 1cm shifted (4cm,0);
\stopMPcode
\stoptext
Le demi-cercle : halfcircle
halfcircle dessine la partie supérieur d'un cercle de diamètre 1 unité centré en (0,0).
\starttext
\startMPcode
draw halfcircle scaled 3cm;
\stopMPcode
\stoptext
tu ne peux pas utiliser fill car le dessin n'est pas fermé.
Le quart-cercle : quartercircle
quartercircle dessine le premier quart d'un cercle de diamètre 1 unité centré en (0,0).
\starttext
\startMPcode
draw quartercircle scaled 3cm;
\stopMPcode
\stoptext
tu ne peux pas utiliser fill car le dessin n'est pas fermé.
Tu peux modifier unitsquare à l'aide de superellipsed qui prend comme facteur un nombre compris entre 0 et 1.
\starttext
\startMPcode
path p;
p:=unitsquare scaled 2cm;
draw p;
draw p superellipsed .9 shifted (2.5cm,0);
draw p superellipsed .8 shifted (5cm,0);
draw p superellipsed .7 shifted (7.5cm,0);
draw p superellipsed .6 shifted (10cm,0);
draw p superellipsed .5 shifted (0,-2.5cm);
draw p superellipsed .3 shifted (2.5cm,-2.5cm);
draw p superellipsed .2 shifted (5cm,-2.5cm);
draw p superellipsed .1 shifted (7.5cm,-2.5cm);
draw p superellipsed .05 shifted (10cm,-2.5cm);
\stopMPcode
\stoptext
Si tu remplaces unitsquare par unitcircle tu obtiens les mêmes figures.