Les sources de Syracuse sierpinski_06.jps
sierpinski_06.jpg

%% auteur : 
-0.5 6.5 setxrange
-0.5 6 setyrange

/c 6 def                                %%côté du triangle


/C {c 0} def                            %%on dessine le triangle initial en noir
/B {0 0} def
/A {B C -60 rotatepoint} def
/fillstyle {noir fill} def
[A B C ] polygone*

/h 0.75 sqrt def                        %%hauteur du triangle

/i 6 def                                %%nombre d'itérations 

/min c  def                             %%côté du plus petit triangle

/tri
        {                                                                 
        /c 0.5 c mul def                          
        gsave
            currentpoint translate                      %%sommet "vers le haut" du triangle équilatéral
            min c  gt                                   %%test si "minimum" plus grand que "côté du triangle"
                {
                /a 0.5 c mul def                        %%alors on dessine à l'intérieur le triangle équilatéral en blanc
                /b h c mul def
                newpath
                0 a sub 0 b sub smoveto
                2 a mul 0 srlineto
                0 a sub 0 b sub srlineto
                clip
                blanc fill
                }
                {       
                c tri                                   %%sinon on dessine le triangle blanc supérieur                                   
    
                /a 0.5 c mul def                        %%on translate à gauche
                /b h c mul def
                0 a sub 0 b sub smoveto
                c tri                                   %%puis on dessine le triangle blanc gauche
    
    
                /a 0.5 c mul def                        %%on translate à droite
                /b h c mul def
                a 0 b sub smoveto
                c tri                                   %%puis on dessine le triangle blanc droite
                
                } ifelse
        grestore
        /c 2 c mul def                                  %% on multiplie par 2 pour réinitialiser le côté c du triangle
        }def
 
/itération                                             
        {
        c tri                                         %%procédure qui applique la procédure tri au côté du triangle
        /min min 2 div def                            %%à chaque itération le minimum est divisé par 2
        }def
      
 
 
 A smoveto 
 i {itération} repeat


		


Page composée par petitParseur[ps2html] le jeudi 16 octobre 2008.