Source
``````
%Production personnelle à partir du livre "J'apprends à dessiner" 5-6 ans :) ;-)
prologues:=2;
input geometriesyr16
%1
figure(0,0,17u,17u);
pair A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A',B',D',inter[],oeil[];
path cc[];
trace grille(0.5) withcolor orange;
origine((17,17));
C=pp(0,-6);
D'=pp(0,6);
D=pp(0,-15);
A=pp(-5,0);
B=symetrie(A,C,D);
E=pp(-15.5,10);
F=symetrie(E,C,D);
G=L+u*(0,1);
H=symetrie(G,C,D);
I=pp(0,12);
J=pp(0.5,8);
K=symetrie(J,C,D);
M=pp(2,8);
L=symetrie(M,C,D);%-2,8
oeil1=pp(-2,8.5);oeil5=symetrie(oeil1,C,D);
oeil2=pp(-2.5,8);oeil8=symetrie(oeil2,C,D);
oeil3=pp(-2,7.5);oeil7=symetrie(oeil3,C,D);
oeil4=pp(-1.5,8);oeil6=symetrie(oeil4,C,D);
cc40=cercles(oeil3,oeil3+u*(0.25,0.5));
cc43=cercles(oeil2,pp(-1.5,8.5));
cc42=cercles(oeil1,oeil1+u*(0.25,-0.5));
cc41=cercles(oeil4,pp(-2.5,7.5));
cc44=cercles(oeil7,oeil7+u*(0.25,0.5));
cc47=cercles(oeil6,pp(2.5,8.5));
cc46=cercles(oeil5,oeil5+u*(0.25,-0.5));
cc45=cercles(oeil8,pp(1.5,7.5));
O=pp(2,5);
N=symetrie(O,C,D);
P=pp(0,16);
Q=pp(-2.5,1);
R=symetrie(Q,C,D);
S=pp(-4.5,-2);
T=symetrie(S,C,D);
U=pp(6,8);
V=pp(5,8.5);
W=pp(6,9);
X=symetrie(U,C,D);
Y=symetrie(V,C,D);
Z=symetrie(W,C,D);
A'=pp(9,0);
B'=symetrie(A',C,D);
cc1=cercles(A,2u);
inter1=cc1 intersectionpoint demidroite(pp(-8,0),pp(-8,1));
inter2=symetrie(inter1,A,B);
cc2=cercles(B,2u);
cc3=cercles(C,inter1);
cc31=cercles(D',inter2);
cc4=cercles(D,pp(0,-3.5));
cc5=cercles(E,inter1);
cc6=cercles(F,symetrie(inter1,C,D));
cc7=cercles(G,1.5u);
cc8=cercles(H,1.5u);
inter5=cc7 intersectionpoint demidroite(G+u*(-0.5,0),G+u*(-0.5,1));
cc9=cercles(I,inter5);
cc10=cercles(J,2.25u);
cc11=cercles(K,2.25u);
cc12=cercles(L,u);
cc13=cercles(M,u);
cc14=cercles(N,2.5u);
cc15=cercles(O,2.5u);
inter3=cc14 intersectionpoint demidroite(pp(-1,9),pp(-1,11));
inter4=symetrie(inter3,C,D);
cc16=cercles(P,inter3);
inter6=pp(0,1);
cc17=cercles(Q,u);
cc18=cercles(R,u);
cc19=cercles(S,inter6);
cc20=cercles(T,inter6);
cc21=cercles(U,pp(7,10));
cc22=cercles(V,pp(7,10));
cc23=cercles(W,pp(7,7));
cc24=cercles(X,X+u*(-0.5,1));
cc25=cercles(Y,X+u*(-0.5,1));
cc26=cercles(Z,X-u*(0.5,0.5));
cc27=cercles(A',W);
cc28=cercles(B',Z);
picture etape[];
etape1=image(
trace cc1 cutbefore segment(inter1,inter1) cutafter segment(inter2,inter2);
trace symetrie(cc1 cutbefore segment(inter1,inter1) cutafter segment(inter2,inter2),C,D);
trace cc31 cutbefore demidroite(inter1,inter2) cutafter segment(symetrie(inter2,C,D),symetrie(inter2,C,D));
trace cc16 cutbefore segment(inter3,inter3) cutafter segment(inter4+u*(0,-1),inter4+u*(0,1));
trace cc14 cutbefore segment(inter3,inter3) cutafter demidroite(N,L);
trace symetrie(cc14 cutbefore segment(inter3,inter3) cutafter demidroite(N,L),C,D);
trace subpath(length cc12/4,length cc12/2) of cc12;
trace symetrie(subpath(length cc12/4,length cc12/2) of cc12,C,D);
trace cc10 cutbefore cc12 cutafter (subpath(length cc3/4,length cc3/2) of cc3);
trace symetrie(cc10 cutbefore cc12 cutafter (subpath(length cc3/4,length cc3/2) of cc3),C,D);
trace cc3 cutbefore (subpath(length cc10/2,3*length cc10/4) of cc10) cutafter demidroite(inter2,inter1);
trace symetrie(cc3 cutbefore (subpath(length cc10/2,3*length cc10/4) of cc10) cutafter demidroite(inter2,inter1),C,D);
);
etape2=image(
trace etape1;
trace cc5 cutbefore segment(inter1,inter1);
trace symetrie(cc5 cutbefore segment(inter1,inter1),C,D);
trace cc7 cutbefore demidroite(G+u*(0.5,0),G+u*(0.5,1)) cutafter demidroite(G,E);
trace symetrie(cc7 cutbefore demidroite(G+u*(0.5,0),G+u*(0.5,1)) cutafter demidroite(G,E),C,D);
trace cc9 cutbefore cc8 cutafter segment(inter5,inter5);
);
etape3=image(
trace etape2;
trace cc25 cutbefore cc24 cutafter cc26;
trace symetrie(cc25 cutbefore cc24 cutafter cc26,C,D);
trace cc24 cutbefore cc5 cutafter (subpath(length cc25/4,length cc25/2) of cc25);
trace symetrie(cc24 cutbefore cc5 cutafter (subpath(length cc25/4,length cc25/2) of cc25),C,D);
trace cc26 cutbefore (subpath(length cc25/2,3*length cc25/4) of cc25) cutafter cc5;
trace symetrie(cc26 cutbefore (subpath(length cc25/2,3*length cc25/4) of cc25) cutafter cc5,C,D);
trace cc28 cutbefore cc5 cutafter segment(Z,Z);
trace symetrie(cc28 cutbefore cc5 cutafter segment(Z,Z),C,D);
);
etape4=image(
trace etape3;
trace cc4 cutbefore cc31 cutafter cc31;
trace segment(point(length cc4/4) of cc4,iso(A,B));
trace cc19 cutbefore segment(inter6,inter6) cutafter (subpath(length cc17/8,3*length cc17/8) of cc17);
trace symetrie(cc19 cutbefore segment(inter6,inter6) cutafter (subpath(length cc17/8,3*length cc17/8) of cc17),C,D);
trace subpath(length cc17/4,length cc17/2) of cc17;
trace symetrie(subpath(length cc17/4,length cc17/2) of cc17,C,D);
);
picture yeux;
yeux=image(
trace cc41 cutbefore cc40 cutafter cc42;
trace symetrie(cc41 cutbefore cc40 cutafter cc42,oeil1,oeil3);
trace cc40 cutbefore cc43 cutafter (subpath(length cc41/4,length cc41/2) of cc41);
trace symetrie(cc40 cutbefore cc43 cutafter (subpath(length cc41/4,length cc41/2) of cc41),oeil2,oeil4);
);
etape5=image(
path Yeux;
trace etape4;
Yeux=(cc41 cutbefore cc40 cutafter cc42)--(cc40 cutbefore cc43 cutafter (subpath(length cc41/4,length cc41/2) of cc41))--reverse(symetrie(cc41 cutbefore cc40 cutafter cc42,oeil1,oeil3))--reverse(symetrie(cc40 cutbefore cc43 cutafter (subpath(length cc41/4,length cc41/2) of cc41),oeil2,oeil4))--cycle;
remplis Yeux;
remplis symetrie(Yeux,C,D);
);
trace etape5;
fin;
figure(0,0,17u,17u);
trace etape5;
fin;
end``````