Warnung: Wenn Sie anfangen, mit Fraktalen zu spielen, kann dies süchtig machen. Ich weiß nicht warum, aber es macht blöd Spaß, diese Dinge zu machen. Eigentlich habe ich mich zum ersten Mal mit Fraktalen im Rahmen der #TeamTrees-Herausforderung befasst - einem Projekt, mit dem bis 2020 genug Geld gesammelt werden soll, um 20 Millionen Bäume zu pflanzen. (Wir haben unser Ziel erreicht!)
Was haben Fraktale mit Bäumen zu tun? Warte einen Schritt nach dem anderen. Ich werde Ihnen zeigen, wie Sie einen Baum mithilfe eines Fraktals erstellen, aber lassen Sie uns zunächst einen kleinen Umweg über das Konzept der Rekursion machen.
Was ist Rekursion? Lassen Sie mich am Beispiel erklären: Angenommen, Sie wollten die Primfaktoren einer Zahl n finden. Sagen Sie n = 12. Nun, das können Sie in Ihrem Kopf tun. 2 x 2 x 3 = 12, und das sind alles Primzahlen. Aber was ist, wenn n = 1.234.533? Dafür brauchen Sie eine Methode. Hier ist ein Rezept zum Generieren der Primfaktoren einer beliebigen Zahl:
-
Teilen Sie n durch 2: Wenn es keinen Rest gibt, schreiben Sie 2 als Faktor auf
Reset n = das Ergebnis der Division (n / 2)
-
Wiederholen Sie den obigen Schritt für die neue Nummer
- Fahren Sie fort, bis die Division durch 2 einen Rest ergibt
- Erhöhen Sie nun den Teiler um 1 (also 2 + 1 = 3)
- Teilen Sie die neue Zahl durch 3: Wenn es keinen Rest gibt, schreiben Sie 3 als Faktor auf…
Und so weiter. Fahren Sie mit dieser grundlegenden Routine fort, indem Sie bei jedem Schritt n einstellen und den Divisor hochrasten, bis das Ergebnis der Division kleiner als 2 ist - dann sind Sie fertig. Lassen Sie uns diesen Algorithmus in ein Python-Skript einfügen:
Klicken Sie auf die Schaltfläche Wiedergabe, um es auszuführen. Huh! Es stellt sich heraus, dass die Primfaktoren von 1.234.533 3, 79 und 5.209 sind. Ich habe diese Zahl zufällig ausgewählt, deshalb ist es cool, dass sie einen so hohen Primfaktor hat. Sie können das Skript auch mit Ihren eigenen verrückten Zahlen ausführen. Klicken Sie einfach auf das Stiftsymbol und geben Sie etwas in Zeile 15 ein.
Auf jeden Fall ist hier zu beachten, wie es funktioniert: Ich habe eine Funktion namens "pfact" erstellt, um die Operationen auszuführen, und die Definition der Funktion ruft sich selbst auf (in Zeile 11). Das ist Rekursion. Indem wir diese verschachtelte Struktur erstellen, können wir mit sehr wenig Code aufwändige Berechnungen durchführen. Es ist schon erstaunlich, dass das funktioniert.
Rekursion in freier Wildbahn
Was ist mit Fraktalen? Fraktale sind Muster, die in verschiedenen Maßstäben dasselbe Aussehen haben. Man findet sie überall in der Natur. Schauen Sie sich eine Küste an: Sie ist voller Buchten, Flüsse und Halbinseln. Wenn Sie in einen kleinen Ausschnitt hineinzoomen, ist er weicher? Nein, aus der Nähe sehen Sie die gleichen gezackten Formen in kleinerem Maßstab.
Diese Selbstähnlichkeit ist auch bei Bäumen zu beobachten. Wenn Sie vom Stamm ausgehen und aufsteigen, zerfällt er in mehrere Teile - wir nennen diese Zweige. Wenn Sie einem dieser Zweige folgen, wird auch dieser ähnlich wie der vorherige Zweig aufgeteilt. Jeder Ast des Baumes ist selbst eine kleinere Baumform. Ein Baum ist also wie ein Fraktal. Das heißt, wir können einen Baum mit Fraktalen modellieren.
Ich denke, wir sind bereit für ein Baum-Fraktal. Ich zeige Ihnen, wie Sie dieses Fraktal mit GlowScript Python erstellen. Natürlich gibt es auch andere Möglichkeiten. Vielleicht machen Sie es lieber mit Python und Turtle? Hier ist ein nettes Tutorial dafür.
Hier ist der Grundplan für dieses Baum-Fraktal:
- Beginnen Sie an einem bestimmten Punkt und bewegen Sie sich eine bestimmte Strecke in eine bestimmte Richtung.
- Machen Sie an diesem Punkt einen Zweig. Drehen Sie einen Winkel nach rechts und wiederholen Sie den vorherigen Schritt mit einem kürzeren Abstand. (Rekursion!)
- Nun gehe zurück und biege links ab, um den anderen Ast zu machen. (Wiederholung.)
Sie werden diesen Code wahrscheinlich erst dann wirklich verstehen, wenn Sie ihn brechen. Also los geht's - das ist mein erstes Baum-Fraktal. Führe dies aus und ändere dann ein paar Sachen. Wenn Sie auf das Stiftsymbol klicken, können Sie den Code anzeigen und bearbeiten.
Eine kurze Anmerkung zu Vektoren und Zylindern. Da jeder Zweig ein Zylinder in drei Dimensionen ist, gibt es einige Teile des Codes, die möglicherweise verwirrend sind. Wenn Sie in GlowScript Python einen Zylinder erstellen, benötigen Sie zwei Dinge: eine Startposition (einen Vektor im 3D-Raum) und einen anderen Vektor, der vom Anfang bis zum Ende des Zylinders zeigt. Im Code ist dieser Zeigevektor die Variable a - es ist dieser Vektor, der bei jeder Verzweigung gedreht wird.
Verzweigung
Genug von Vektoren - lasst uns ein paar coole Sachen machen! Was ist, wenn ich meinen Baum baumartiger machen möchte? Hier sind einige Dinge, die ich ändern kann:
- Anstatt aufeinanderfolgende Verzweigungen um eine bestimmte Länge zu verkürzen, kann ich sie proportional verkürzen - beispielsweise um 25 Prozent bei jeder Iteration.
- Ich kann die Dicke von Zweigen proportional zu ihrer Länge machen.
- Ich kann die kleinsten Teile grün und die größeren Teile braun machen.
So sieht mein neuer Baum aus. Oh, und hier ist der Code.

Aber warte! Dieser Baum hat nur zwei Dimensionen. Was ist mit einem dreidimensionalen Baum? Was ist mit einem Baum mit etwas Zufälligkeit? Ja, diese beiden Dinge würden besser aussehende (realistischere) Bäume ergeben - aber das überlasse ich Ihnen als Hausaufgabe.