input tortue.mp;
numeric d,iter;
vardef trace(expr a,b) = draw a--b enddef;
vardef L(expr n,m) =
if m>0:
tourne(n,90);
R(n,m-1);
avance(n,d,trace);
tourne(n,-90);
L(n,m-1);
avance(n,d,trace);
L(n,m-1);
tourne(n,-90);
avance(n,d,trace);
R(n,m-1);
tourne(n,90);
fi
enddef;
vardef R(expr n,m) =
if m>0:
tourne(n,-90);
L(n,m-1);
avance(n,d,trace);
tourne(n,90);
R(n,m-1);
avance(n,d,trace);
R(n,m-1);
tourne(n,90);
avance(n,d,trace);
L(n,m-1);
tourne(n,-90);
fi
enddef;
beginfig(1);
iter := 1;
d := 8cm;
tortue(1,0,0,90,1);
L(1,iter);
endfig;
beginfig(2);
iter := 2;
d := 4cm;
tortue(1,0,0,90,1);
L(1,iter);
endfig;
beginfig(3);
iter := 3;
d := 2cm;
tortue(1,0,0,90,1);
L(1,iter);
endfig;
beginfig(4);
iter := 4;
d := 1cm;
tortue(1,0,0,90,1);
L(1,iter);
endfig;
beginfig(5);
iter := 5;
d := .5cm;
tortue(1,0,0,90,1);
L(1,iter);
endfig;
beginfig(6);
iter := 6;
d := .25cm;
tortue(1,0,0,90,1);
L(1,iter);
endfig;
end
|