• Increase font size
  • Default font size
  • Decrease font size

Kochkurve und Binärbaum

Drucken
   Kochkurve      Binaerbaum      Raster- und Pixelgraphik      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       Von Scratch zur turtle   

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.



        01  from  turtle  import *
02
03 class koch (turtle):
04
05 def __init__(self):
06 turtle.__init__(self, 500, 600, 100, 160, "Kochkurve"winken
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
26 [ SOURCE ]




  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.



        01  from  turtle  import *
02
03 class binbaum (turtle):
04
05 def __init__(self):
06 turtle.__init__(self, 500, 400, 100, 160, "Binaerbaum"winken
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"winken
25 test.gehe_zum_start (240,440)
26 test.drehe_links (90)
27 test.baum (10,200)
28
29 test.fenster.mainloop ()





  TOP 
 

(c) g-ymnasium.de 2006 - 2013 + Administrator