Retour

Source : dragon01.mp

dragon01.mp
input tortue.mp; 
numeric d,iter; 
 
vardef trace(expr a,b) = draw a--b enddef; 
 
vardef D(expr n,m) = 
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) = 
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; 
 
dragon01.mp (figure 1)
beginfig(1);
iter := 2; 
d := 6cm; 
tortue(1,0,0,0,1); 
D(1,iter);  
endfig;
 
dragon01.mp (figure 2)
beginfig(2);
iter := 4; 
d := 3cm; 
tortue(1,0,0,0,1); 
D(1,iter);  
endfig;
 
dragon01.mp (figure 3)
beginfig(3);
iter := 6; 
d := 1.5cm; 
tortue(1,0,0,0,1); 
D(1,iter);  
endfig;
 
dragon01.mp (figure 4)
beginfig(4);
iter := 8; 
d := 0.75cm; 
tortue(1,0,0,0,1); 
D(1,iter);  
endfig;
 
dragon01.mp (figure 5)
beginfig(5);
iter := 10; 
d := 0.375cm; 
tortue(1,0,0,0,1); 
D(1,iter);  
endfig;
 
end