Ein Fraktal ist ein nie endendes Muster. Fraktale sind unendlich komplexe Muster, die sich über verschiedene Skalen hinweg selbst ähneln. Sie werden erstellt, indem ein einfacher Vorgang in einer fortlaufenden Rückkopplungsschleife immer wieder wiederholt wird. Von Rekursionen getrieben, sind Fraktale Bilder dynamischer Systeme - die Bilder des Chaos.

In diesem Artikel werden wir einen farbenfrohen Y-Fraktalbaum mit einer rekursiven Technik in Python zeichnen.

Beispiele:

Ausgabe für Tiefenebene: (a) 14 (b) 12

Module erforderlich

turtle: Mit der Turtle- Bibliothek können Benutzer mithilfe von Befehlen Bilder oder Formen zeichnen und ihnen eine virtuelle Leinwand zur Verfügung stellen. Die Schildkröte wird mit Pythons Standardbibliothek geliefert. Es benötigt eine Version von Python mit Tk- Unterstützung, da es tkinter für die Grafiken verwendet.

Verwendete Funktionen:



  • fd (x) : Ziehen Sie den Cursor um x Pixel nach vorne .
  • rt (x), lt (x) : Dreht die Blickrichtung des Cursors um x Grad nach rechts bzw. links.
  • colormode() : um den Farbmodus auf rgb zu ändern.
  • pencolor (r, g, b) : Zum Einstellen der Farbe des Schildkrötenstifts.
  • speed() : Zum Einstellen der Geschwindigkeit der Schildkröte.

Ansatz :

  • Wir beginnen mit dem Zeichnen einer einzelnen Y-Form für den Basisbaum (Ebene 1). Dann dienen beide Zweige des 'Y' als Basis für die beiden anderen 'Y' (Stufe 2).
  • Dieser Vorgang wird rekursiv wiederholt und die Größe des Y nimmt mit zunehmendem Pegel ab.
  • Die Färbung des Baumes erfolgt stufenweise: am dunkelsten in der Basisebene bis am hellsten in der obersten.

In der folgenden Implementierung werden wir einen Baum der Größe 80 und der Ebene 7 zeichnen .

from turtle import *
  
  
speed('fastest') 
  
rt(-90) 
  
angle = 30
  
def y(sz, level):    
  
    if level > 0: 
        colormode(255) 
          
        
        
        
        
        pencolor(0, 255//level, 0) 
          
        
        fd(sz) 
  
        rt(angle) 
  
        
        
        y(0.8 * sz, level-1) 
          
        pencolor(0, 255//level, 0) 
          
        lt( 2 * angle ) 
  
        
        
        y(0.8 * sz, level-1) 
          
        pencolor(0, 255//level, 0) 
          
        rt(angle) 
        fd(-sz) 
           
          
y(80, 7) 

Ausgabe :