input tortue.mp;
numeric d,iter;
color couleur;
vardef trace(expr a,b) =
draw a--b
withpen pencircle scaled 2pt
withcolor (.6,.1,.3)
enddef;
vardef D(expr n,m) =
save couleur;
color couleur;
couleur := blue;
if m>0:
tourne(n,-45);
D(n,m-1);
tourne(n,90);
E(n,m-1);
else:
tourne(n,-90);
avance(n,d,trace);
tourne(n,90);
fill (fullcircle scaled 6mm) shifted tortue_xy[n] withcolor (.9,.9,0);
avance(n,d,trace);
fi
enddef;
vardef E(expr n,m) =
save couleur;
color couleur;
couleur := red+green;
if m>0:
D(n,m-1);
tourne(n,-90);
E(n,m-1);
tourne(n,45);
else:
avance(n,d,trace);
fill (fullcircle scaled 7mm) shifted tortue_xy[n] withcolor (.4,.9,.2);
tourne(n,-90);
avance(n,d,trace);
tourne(n,90);
fi
enddef;
beginfig(1);
iter := 9;
d := .45cm;
tortue(1,0,0,0,1);
D(1,iter);
endfig;
end
|