Ok. Ich habe gerade nochmal nachgeschaut, da ich immer so schnell vergesse, was ich überhaupt programmiert habe.
Also wie ich schon geschrieben habe, rechnet der Algorithmus rekursiv.
Starten tut der Algorithmus mit einem vorgegebenen Hauptstamm, der nicht zufällig gegeriert wird.
Egal wie die Einstellungen sind, der erste Stamm bleibt immer gleich.
Die Klasse dieses Stammes besitzt eine Methode addChildren.
Mit dieser Methode werden genau zwei Kindstämme hinzugefügt, falls der Stamm noch keine Kinder besitzt.
Anderfalls, also wenn der Stamm, den man mit der besagten Methode aufruft, schon Kinder besitzt, wird einfach addChildren von den Kindern aufgerufen. Und falls diese schon Kinder besitzen, leiten sie den Befehl an die Kindeskinder weiter, usw.
Ich rufe diese Methode in einer Schleife auf:
Eine Iteration: 1 Hauptstamm + 2 Kinder
Zwei Iterationen: 1 Hauptstamm + 2 Kinder + 4 Kindeskinder
Drei Iterationen: 1 + 2 + 4 + 8
n Iterationen: 1 + 2 + … + 2^n Stämme
Zudem wird bei jedem Hinzufügen geschaut, ob der Platz nicht schon von anderen Ästen aufgebraucht wurde.
Der Befehl axx gibt vor, wie häufig die besagte Schleife aufgerufen wird. Theoretisch sind 99 Aufrufe möglich, aber ich behaupte mal, dass hier der Speicher nicht mehr ausreicht: 1+2+4+…+2^99 Objekte…
Beispiel a2 = 1 + 2 + 4 = 7 Äste/Stämme
Der Befehl bxxx gibt an, wie gross die Ansatzfläche für den Kindesstamm ist. Wenn bxxx sehr klein ist, ist die Fläche für die Kindsstämme sehr gross. Wenn bxxx sehr gross ist, ist die Ansatzfläche für den nächsten Stamm sehr klein.
Der Befehl cxxx gibt an, wie lang die Stämme sind. Je grösse c, desto länger, und je kleiner, desto kürzer.
Wichtig hierbei ist, dass cxxx bxxx beeinflusst. Also je länger ein Stamm ist, desto grösser auch die Ansatzfläche.
Deswegen müssen cxxx und bxxx beim Verstellen immer gemeinsam betrachtet werden.
Und zuzletzt dxxx: Das ist auch ein komischer Parameter. Dieser bestimmt wie bxxx auch die Ansatzfläche (also der Bereich, wo ein neuer Stamm anknüpfen soll). Er besagt, wie das gleichschenklige Dreieck mit Höhe h aussieht, an dessen beiden Seiten, die die gleiche länge haben, die Kinder anknüpfen. Genauer: Je grösser dxxx, desto kleiner h, und je kleiner dxxx, desto grösser h.
Weiss Gott, warum ich das wieder umgekehrt proportional definiert habe

Man kann also sagen bxxx bestimmt die Breite und dxxx die Höhe des gleichschenkligen Dreiecks, an dessen gleichlangen Seiten die neuen Kinder dranwachsen. (Diese Erkenntnis kam mir auch grad während des Schreibens)
Noch zwei wichtige Sachen: All diese Befehle beeinflussen den ersten Stamm nicht!
Probier die Befehle bei kleinem axx aus, a4 ist zum Beispiel eine gute Einstellung zum ausprobieren.
Und was vielleicht noch nicht so deutlich war: Wenn die Kindesäste keinen Platz mehr finden, weil sie schon vorhandene Äste schneiden würden, so werden sie nicht generiert. Deswegen kann es vorkommen, dass bei gewissen Einstellungen manchmal fast keine Äste entstehen…
Deswegen wächst der Baum nicht immer so exponentiell.
Ok und zu deiner letzten Anmerkung: Ja das kann man durchaus machen. Jedoch muss man solche Schritte meistens schon von Anfang an mit einberechnen. Und bei mir war es halt so, dass ich genau definiert habe: Jeder Ast hat genau zwei Kinder oder gar keine! Aber sicherlich und näher an der Realität könnte man auch sagen: Jeder Ast hat zwischen 0 und 10 Kindern.
Und auch könnte man Blätter dranhängen, das wäre sicher auch noch schön. Aber ich habe gedacht: Mein Programm passt so besser zum Herbst
Protected Zone