%% 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
|