Scheme Turtle 2

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Scheme</language>
==Beispiele mit Rekursion==

Die folgenden Prozeduren für Turtles sind typische Lehrbeispiele für Rekursion. Nebenher werden weitere eingebaute Sprachelemente der Scheme-Turtle-Geometrie eingeführt.

===Klassischer Binärbaum mit jeweils halbierter Astlänge===
Die jeweils ansetzenden Teilbäume haben gerade die halbe Stammlänge gegenüber ihren Vorgängern. Die Stämme benachbarter Binärbäume bilden einen Winkel von 90 Grad. Außerdem wird die Aststärke der Rekursionstiefe angepasst wird. Wenn eine Stammlänge von 20 Einheiten unterschritten wird, endet die Baum-Verzweigung.
<eval>
(clear canvas)
(move turtle 200 190)

(define tree
 (lambda(side turtle) 
  (cond 
    ((< side 20) #t)
    (else  
      (penwidth turtle (+ (/ side 10) 1 ))    
      (forward turtle side)  
      (left turtle 45)  
      (tree (/ side 2) turtle) 
      (right turtle 90)  
      (tree (/ side 2) turtle)
      (left turtle 45)  
      (backward turtle side)))))

(tree 100 turtle)
</eval>
<canvas></canvas>

Auch wenn wir die Ausgangsposition der Turtle mit ''home'' hätten festlegen können, wurden hier exemplarisch Koordinaten (x,y)=(200,190) verwendet. Der Ursprung des Koordinatensystems befindet sich in der linken oberen Ecke. Von dort waagerecht nach rechts verläuft die x-Achse. Die y-Achse zeigt orthogonal dazu nach unten. Die Verwendung von Koordinaten ist also prinzipiell möglich, für die Turtle-Geometrie jedoch untypisch.

[[Scheme Turtle 3]]