Fichier suite_01.jps — Modifié le 11 Mars 2006 à 10 h 56

suite_01.pdf
Source
%% auteur : 
/k 5 def        %% le demi-cote du carre de depart
/p .1 def       %% p est la proportion utilise a chaque iteration. 0 < p < 1 
/n 20 def       %% nombre d'iterations

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

/A {k neg k} def
/B {k k} def
/C {k k neg} def
/D {k neg k neg} def

%% syntaxe : A B nouveau_point --> C, tel que (1/p)*vect (AC) = vect (AB)
/nouveau_point {
   dupd         %% A, B, A, B
   vecteur      %% A, B, AB
   p mulv       %% A, B, AC
   exchp        %% A, AC, B
   popp         %% A, AC
   addv         %% C
} def

%% syntaxe : poly nouveau_polygone --> poly
/nouveau_polygone {
1 dict begin
   dup
   /liste exch def      %% on recupere le polygone
   [ exch               %% on en cree un nouveau
   aload pop            %% contenant les points de l'ancien
   liste 0 get          %% et on rajoute le 1er point a la fin
   liste 1 get          %% de la liste
   ]
   (nouveau_point) 2 4 Apply
end
} def

[A B C D] 
n {
   /fillstyle {cyan fill} def
   dup polygone*
   nouveau_polygone
   /fillstyle {blanc fill} def
   dup polygone*
   nouveau_polygone
} repeat