Présentation de sierpinski_01.jps

/syracuse/bbgraf/albums/sierpinski/sierpinski_01.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 1 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