Thiemo Mättig

Ringelblumen zeichnen mit Scheme

In einer schlaflosen Nacht im Januar 2000 habe ich zusammen mit Sebastian Lüth dieses faszinierende Grafikprogramm entworfen, das zum Kennenlernen des Turtle-Systems von Prof. Wagenknecht ideal ist. Experimente mit den Parametern lohnen sich!

(define rosette
  (lambda (farbe groesse runden konstante divisor)
    (letrec
      ((iter
         (lambda (winkel)
           (send bob right
             (/ (+ (sin winkel) konstante) divisor))
           (send bob forward groesse)
           (if (< winkel (* runden 2 pi))
               (iter (+ winkel 0.01745))))))
      (send bob set-color farbe)
      (send bob set-thickness 2)
      (iter 0))))

Leider funktioniert diese Prozedur nur mit der SWL. Hier noch ein paar Beispielaufrufe:

(rosette 'red 2.2 3 0.1 0.3)
(rosette 'blue 2.8 4 0.1 0.4)
(rosette 'darkgreen 1.2 5 0.1 0.5)
(rosette 'black 3 2 0.1 0.2)

Mit dem Befehl (send bob restart) kann das Turtle Fenster gelöscht werden. Falls das Fenster ganz geschlossen wurde, kann man mit den Befehlen (define win1 (create "Turtle" 700 500)) und (define bob (make-turtle "Bob" win1 350 250 90)) ein neues Fenster mit einer neuen Turtle erzeugt werden.

Die Möglichkeiten sind praktisch unbegrenzt, wie man auch an diesen Bildern sehen kann. Es kann sogar vorkommen, dass sich die Turtle "verläuft" und aus dem Grafikfenster verschwindet.

Beispielbild Beispielbild Beispielbild Beispielbild Beispielbild Beispielbild Beispielbild Beispielbild Beispielbild Beispielbild