Fichier cantor.mp (figure 4) — Modifié le 19 Juin 2008 à 00 h 02

cantor.mp (figure 4)
Source

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