Présentation de vonkoch-recursif.jps

/syracuse/bbgraf/icons/exemples/vonkoch-recursif.jpg
-2.5 2.5 setxrange -2.5 2.5 setyrange /A {0 2} def /B {-2 0} def %% syntaxe : A B manip /manip { 4 copy %% A B A B 4 copy %% A B A B A B 2 3 div hompoint %% A B A B A' 3 1 rollp %% A B A' A B 1 3 div hompoint %% A B A' A" 4 copy %% A B A' A" A' A" -60 rotatepoint %% A B A' A" A'" 2 -1 rollp %% A B A' A'" A" 4 -1 rollp %% A A' A'" A" B } def %% version recursive %% syntaxe : A B n action %% ou A et B points et n entier positif ou nul /action { %% ouverture d'un dictionnaire pour stocker les variables n, A, A1, A2, %% et B 5 dict begin /n exch def n 0 eq { %% si n = 0, on dessine [AB] 1 trait } { %% sinon on appelle avec les nouveaux segments et 1 niveau + bas manip /B defpoint /A3 defpoint /A2 defpoint /A1 defpoint /A defpoint /n n 1 sub store A A1 n action A1 A2 n action A2 A3 n action A3 B n action } ifelse end } def bleu [A 6 {2 copy O 60 rotatepoint} repeat] %% on genere un hexagone regulier %% le nombre 5 designe le niveau de profondeur de la recursivite {5 action} 2 4 Apply