Scheme Turtle 2

Aus ProgrammingWiki
Archivierte Version vom 2010-01-03T09:21:21+00:00. Aktuelle Version

Inhaltsverzeichnis

Beispiele mit Rekursion

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

Klassischer Binärbaum mit jeweils halbierter Astlänge

Ein Baum mit Stammlänge side ist ein Gebilde, das aus einem Stamm der Länge side besteht, an dessen Ende links im Winkel von 45 Grad ein Baum der halben Stammlänge, also side/2, anschließt, und an dessen Ende rechts im Winkel von -45 Grad ein Baum der halben Stammlänge, also side/2, anschließt. Ist die Stammlänge kleiner als z.B. 20, also side < 20, dann besteht der Baum aus nichts.

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 id="4b40600745a2a"> (clear canvas) (move turtle 200 190)</eval>

(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)

Ihr Browser unterstützt Canvas nicht.

Befehlsliste

Die folgende Tabelle enthält alle Befehle, die eine Turtle versteht.

Turtle Befehle
BefehlBeschreibung
homesetzt die Turtle auf die Mitte der Zeichenfläche
move turtle x ysetzt die Turtle auf den Punkt (x,y) der Zeichenfläche (Koordinatenursprung: linke obere Ecke)
forward turtle xlässt die Turtle x Schritte nach vorn gehen
backward turtle xlässt die Turtle x Schritte nach hinten gehen
pendown turtlesetzt den stift ab, sodass Turtle-Bewegungen eine Spur hinterlassen (Standard)
penup turtlenimmt den stift hoch, sodass Turtle-Bewegungen keine Spur hinterlassen
penwidth turtle xSetzt die Stärke des Stiftes auf x
pencolor turtle r g bsetzt die Farbe des Stiftes (Rot-Gelb-Grün-Werte im Bereich 0-255)
right turtle xdreht die Turtle um x Grad nach rechts
left turtle xdreht die Turtle um x Grad nach links
hide turtleblendet die Turtle aus
show turtleblendet die Turtle ein
clone turtleclont die Turtle in der Aktuellen Position
panerase turtleDie Turtle löscht die Markierungen, denen sie begegnet (wie ein Radiergummi).
clear canvaslöscht die Zeichenfläche


Beispiel

Setzen Sie sich mit dem folgenden Beispiel auseinander und modifizieren Sie die Prozedur quad.

Ihr Browser unterstützt Canvas nicht.

<eval id="4ae30126a3ec6"> (clear canvas1) (home turtle1) (quad turtle1 50)</eval>


Scheme Turtle 3