Auteur ou autrice : Vincent Zoonekynd.
Mise en ligne le 19 avril 2024
En 1999, puis mis à jour en 2001, Vincent Zoonekynd a mis en ligne un fichier MetaPost illustrant différentes utilisations du programme avec plus de 300 exemples. Ces exemples sont disponibles sur le CTAN.
Ici, une macro est définie récursivement pour construire des points de la courbe de Bézier cubique définie par 4 points.
Code
u:=1cm;
beginfig(62)
vardef bezier(expr n,A,B,C,D) =
save a;
pair a[];
a[1] := A;
a[2] := B;
a[3] := C;
a[4] := D;
a[12] := 1/2 [ a[1], a[2] ];
a[23] := 1/2 [ a[2], a[3] ];
a[34] := 1/2 [ a[3], a[4] ];
a[123] := 1/2 [ a[12], a[23] ];
a[234] := 1/2 [ a[23], a[34] ];
a[1234] := 1/2 [ a[123], a[234] ];
if n>0:
bezier(n-1, a[1], a[12], a[123], a[1234]);
bezier(n-1, a[1234], a[234], a[34], a[4]);
else:
draw a[1234] withpen pencircle scaled 2bp;
fi;
enddef;
pair A, B, C, D;
A = (0,0);
D = (2u,0);
B = (-u,2u);
C = (3u,3u);
draw A withpen pencircle scaled 4bp;
draw B withpen pencircle scaled 4bp;
draw C withpen pencircle scaled 4bp;
draw D withpen pencircle scaled 4bp;
bezier(5,A,B,C,D);
endfig;
end.