Fichier cantor.mp (figure 6) — Modifié le 19 Juin 2008 à 00 h 02
prologues:=2;
verbatimtex
etex
vardef sirp(expr A,B,C,n)= %Procédure pour sierpinski
if n>0:
sirp( A,1/2[A,B],1/2[A,C], n-1);
sirp( 1/2[A,B], B ,1/2[B,C] , n-1);
sirp( 1/2[A,C], 1/2[B,C],C , n-1);
else:
fill A--B--C--cycle withcolor black;
fi;
enddef;
beginfig(1) %% Cantor
u:=4cm;
pickup pencircle scaled 0.01mm yscaled 60;
vardef cantor(expr A,B,n)=
if n>0:
cantor( A, 1/3[A,B], n-1);
cantor( 2/3[A,B], B, n-1);
else:
draw A--1/3[A,B] ;
draw 2/3[A,B]--B ;
fi;
enddef;
z0=(u,0); z1=-z0; z3=(0,-0.03)*u;
draw z0--z1;
for n=1 upto 6:
cantor(z0+n*z3,z1+n*z3,n-1);
endfor;
endfig;
beginfig(2) %% Tartan de Cantor
u:=12cm;
pickup pencircle scaled 0.01mm;
vardef cant(expr A,B,n)=
if n>0:
cant( A, 1/3[A,B], n-1);
cant( 2/3[A,B], B , n-1);
else:
draw A--(A shifted (0,u));
draw 1/3[A,B]--(1/3[A,B] shifted (0,u)) ;
draw 2/3[A,B]--(2/3[A,B] shifted (0,u)) ;
draw B--(B shifted (0,u));
%et à 90 degrés
draw A rotatedaround( (0,0), 90)--(A rotatedaround( (0,0), 90) shifted (u,0));
draw 1/3[A rotatedaround( (0,0), 90),B rotatedaround((0,0), 90)]--(1/3[A rotatedaround( (0,0), 90),B rotatedaround( (0,0), 90)] shifted (u,0)) ;
draw 2/3[A rotatedaround((0,0), 90),B rotatedaround( (0,0), 90)]--(2/3[A rotatedaround( (0,0), 90),B rotatedaround( (0,0), 90)] shifted (u,0)) ;
draw B rotatedaround( (0,0), 90)--(B rotatedaround( (0,0), 90) shifted (u,0));
fi;
enddef;
z0=(0,0); z1=(u,0);
draw z0--z1--(u,u)--(0,u)--cycle;
cant(z0,z1,4);
endfig;
beginfig(3) %% Tapis de sierpinski
u:=5cm;
pickup pencircle scaled 0.01mm;
z0=(0,0); z1=(u,0);z2=(0.5,(sqrt(3))/2)*u; %triangle équilatéral
sirp(z0,z1,z2,1);
endfig;
beginfig(4) %% Tapis de sierpinski
u:=5cm;
pickup pencircle scaled 0.01mm;
z0=(0,0); z1=(u,0);z2=(0.5,(sqrt(3))/2)*u; %triangle équilatéral
sirp(z0,z1,z2,2);
endfig;
beginfig(5) %% Tapis de sierpinski
u:=5cm;
pickup pencircle scaled 0.01mm;
z0=(0,0); z1=(u,0);z2=(0.5,(sqrt(3))/2)*u; %triangle équilatéral
sirp(z0,z1,z2,3);
endfig;
beginfig(6) %% Tapis de sierpinski
u:=5cm;
pickup pencircle scaled 0.01mm;
z0=(0,0); z1=(u,0);z2=(0.5,(sqrt(3))/2)*u; %triangle équilatéral
sirp(z0,z1,z2,8);
endfig;
end