Drachenkurve

Eine Drachenkurve lässt sich durch ein Lindenmayer-System (siehe Lindenmayer-Systeme) beschreiben, dessen Ergebnis für eine Schildkröten-Grafik verwendet wird.

(defproc dragon-curve (count)
  (let
    ((system
      (new lindenmayer
        (quote (f l r))
        (quote (x y))
        (quote (f x))
        (quote (((x) (x l y f l)) ((y) (r f x r y))))))
     (graphics (new turtle)))
   (progn
     (left graphics 90)
     (pen-down graphics)
     (dolist (element (get-expansion system count) (get-picture graphics))
       (cond
         ((= element (quote f))
           (forward graphics 10))
         ((= element (quote l))
           (left graphics 90))
         ((= element (quote r))
           (right graphics 90))))))))

Das Lindenmayer-System hat

- die Konstanten f, l und r,
- die Variablen x und y,
- das Startwort f x und
- die Ersetzungsregeln x -> x l y f l und y -> r f x r y.

Die Schildkröte wird durch das sich nach einigen Ersetzungsrunden ergebende Wort gesteuert. Dabei bedeutet f eine Bewegung vorwärts, l eine Drehung um 90 Grad nach links und r eine Drehung um 90 Grad nach rechts. Die Symbole x und y werden ignoriert.

Mit dem Programm Calc und der unten verlinkten Datei dragon-curve.sheet.xml kann man Drachenkurven berechnen. In der Zelle A1 wird die gewünschte Ordnung der Kurve angegeben. Die Zelle B1 enthält nach der Berechnung die Kurve. Diese kann über das Menü Zelle > Vergrößern in einem eigenen Fenster angezeigt werden.

Quellen
https://de.wikipedia.org/wiki/Lindenmayer-System
https://de.wikipedia.org/wiki/Drachenkurve


dragon-curve.sheet.xml

Anlage

Drachenkurve 10. Ordnung