Rekursive Drachenkurve
Die Drachenkurve kann mit der Hilfe eines Lindenmayer-Systems konstruiert werden oder mit einer rekursiven Prozedur und der Schildkröten-Grafik. Dafür wird zunächst eine Spezialisierung der Schildkröten-Klasse erzeugt.
(defclass dragon-turtle (turtle))
Diese erhält eine rekursive Methode zum Zeichnen der Drachenkurve.
(defmethod draw-dragon-curve ((this dragon-turtle) n)
t
(cond
((= n 0)
(forward this 10))
((> n 0)
(progn
(draw-dragon-curve this (- n 1))
(right this 90)
(draw-dragon-curve this (- 1 n))))
(t
(progn
(draw-dragon-curve this (- 0 1 n))
(left this 90)
(draw-dragon-curve this (+ 1 n))))))
Die Methode wird innerhalb einer Funktion mit einer Instanz der spezialisierten Klasse aufgerufen. Die Funktion liefert als Resulat das erzeugte Bild.
(defproc dragon-curve (n)
(let
((turtle (new dragon-turtle)))
(progn
(pen-down turtle)
(draw-dragon-curve turtle n)
(get-picture turtle))))
Quelle
Adele Goldberg, David Robson
"Smalltalk-80 The Language"
Seiten 372f
(defclass dragon-turtle (turtle))
Diese erhält eine rekursive Methode zum Zeichnen der Drachenkurve.
(defmethod draw-dragon-curve ((this dragon-turtle) n)
t
(cond
((= n 0)
(forward this 10))
((> n 0)
(progn
(draw-dragon-curve this (- n 1))
(right this 90)
(draw-dragon-curve this (- 1 n))))
(t
(progn
(draw-dragon-curve this (- 0 1 n))
(left this 90)
(draw-dragon-curve this (+ 1 n))))))
Die Methode wird innerhalb einer Funktion mit einer Instanz der spezialisierten Klasse aufgerufen. Die Funktion liefert als Resulat das erzeugte Bild.
(defproc dragon-curve (n)
(let
((turtle (new dragon-turtle)))
(progn
(pen-down turtle)
(draw-dragon-curve turtle n)
(get-picture turtle))))
Quelle
Adele Goldberg, David Robson
"Smalltalk-80 The Language"
Seiten 372f