Anwendungen zur Turtlegrafik

[Back]    [Kochkurve]    [Binaerbaum]    [Hilbertkurve und Sierpinskikurven]   

Um grafische Rekursionsalgorithmen zu verdeutlichen wird die Klasse Turtle bereitgestellt. Die Turtle ist hierbei ein Zeichengerät, mit dessen Hilfe es möglich ist, auf einer vordefinierten Zeichenfläche Grafiken zu erstellen. Auf Grund des Umfanges der Methoden ist eine Nutzung für Hilbert - oder Sierpinskikurven möglich. Die Klasse Turtle kann hier geladen werden.

[Klasse Turtle Spezifikation]    [Source]     

Kochkurve

Eine typische Anwendung für rekursive Graphiken stellt die Kochkurve dar. Hierbei wird fortlaufend ein Streckenstück durch rekursiv durch einen anderen Abschnitt der aus Teilabschnitten besteht ersetzt. Durch fortlaufende Wiederholung des Musters entsteht eine Folgen von selbstähnlichen Figuren. Ab einer bestimmten Anzahl von Schritten ist die Kochkurve bereits erkennbar. Der Vorgang der Rekursion läßt sich in einzelne Interationsschritte unterteilen, hier dargestellt für Quadrat und ein Dreieck als Grundmuster.


Der Code für die Kochfunktion gestaltet sich wie folgt.

        01  from  turtle  import *
        02
        03  class koch (turtle):
        04
        05  def __init__(self): 
        06        turtle.__init__(self, 500, 600, 100, 160, "Kochkurve")   
        07
        08  def dreieck (self,stufe,laenge): 
        09        teillaenge = laenge /3.0   
        10        if stufe > 1:
        11              self.dreieck (stufe -1, teillaenge)
        12              self.drehe_links (60)
        13              self.dreieck (stufe -1, teillaenge)
        14              self.drehe_rechts (120)
        15              self.dreieck (stufe -1, teillaenge)
        16              self.drehe_links (60)
        17              self.dreieck (stufe -1, teillaenge)
        18
        19        else       : self.vor (laenge)
        20
        21  def schnee_flocke (self, x, stufe, laenge):
        22        for i in range (x):
        23             self.dreieck (stufe, laenge)
        24
	25  [ SOURCE ]
	26
	


[TOP]

Binaerbaeume

Abhängig von der Iterationstiefe und der Art der Generatoren lassen sich verschiedene Muster erstellen.

Eine weitere Anwendung stellt der Binärbaum dar, welcher ebenfalls ausgehend von einem Generator in Abhängigkeit von der Iterationstiefe unterschiedliche Muster erzeugt. Der Binaerbaum wächst allerdings gewissermaßen nach außen, trotzdem wird aufgrund der fortgesetzten Teilung ein Grenzwert erreicht, der sich in der entsprechenden Figur postuliert.

Beispiel für Iterationstiefe : 10

Der Code für den Binaerbaum gestaltet sich wie folgt.

        01  from  turtle  import *
        02
        03  class binbaum (turtle):
        04
        05  def __init__(self):
        06        turtle.__init__(self, 500, 400, 100, 160, "Binaerbaum")
        07
        08  def baum (self,stufe,laenge):
        09        teillaenge = laenge /1.5
        10        if stufe > 1:
        11              self.vor (teillaenge)
        12              self.drehe_links (45)
        13              self.baum (stufe -1, teillaenge)
        14              self.drehe_links (90)
        15              self.baum (stufe -1, teillaenge)
        16              self.drehe_links (45)
        17              self.vor (teillaenge)
        18
        19  # Testumgebung
        20
        21  if __name__=="__main__":
        22
        23         test = binbaum ()
        24         test.kroeten_farbe("black")
        25         test.gehe_zum_start (240,440)
        26         test.drehe_links (90)
        27         test.baum (10,200)
        28
        29         test.fenster.mainloop ()
	



[TOP]                [Protected]