Retour

Source : dragon02.mp

dragon02.mp
input tortue.mp; 
input TEX.mp; 
 
numeric d,iter; 
color couleur; 
 
vardef trace(expr a,b) = 
 draw a--b 
 withpen pencircle scaled 2pt 
 withcolor couleur 
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); 
 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); 
 tourne(n,-90); 
 avance(n,d,trace); 
 tourne(n,90); 
fi 
enddef; 
 
dragon02.mp (figure 1)
beginfig(1);
iter := 9; 
d := .5cm; 
tortue(1,0,0,0,1); 
D(1,iter); 
for i=1 upto (iter+1): 
 q := floor(2**i); 
 dotlabel.top(TEX("$" & decimal(q) & "$") scaled 2,point q of tortue_p[1]); 
endfor
endfig;
end