|
Hilbert.m2 |
PROCEDURE Hilbert(level: CARDINAL); (* Hilbert curve (L -> +RF-LFL-FR+, R -> -LF+RFR+FL-) *) PROCEDURE L(n: CARDINAL); BEGIN IF n > 0 THEN DEC(n); Left; R(n); Forward; Right; L(n); Forward; L(n); Right; Forward; R(n); Left; END; END L; PROCEDURE R(n: CARDINAL); BEGIN IF n > 0 THEN DEC(n); Right; L(n); Forward; Left; R(n); Forward; R(n); Left; Forward; L(n); Right; END; END R; BEGIN Init; L(level); Finish; END Hilbert; |
Die Ersetzungsregeln können unmittelbar übernommen werden.
| |
Jede der rekursiven Prozeduren erhält dabei einen Parameter
n, der der noch fehlenden Rekursionstiefe entspricht.
| |
Bei n = 0 wird auf die Ausgabe von Anweisungen verzichtet.
|
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999 |