Wie kann ich ein Fraktale mit js-turtle erstellen?


06.01.2025, 14:25

Ihr müsst mir auch nicht direkt die Lösung sagen, ich brauch nur eine Erklärung wie ich das machen soll.

1 Antwort

Es gibt grundlegende verschiedene Ansätze, auch iterative Umsetzungen sind möglich.

Eine generischer Ansatz wäre über die Implementierung eines L-Systems, dem man die Abbildungsvorschrift mitteilt.

Einfacher ist eine Umsetzung, bei der Du einen rekursivne einfachen Funktionsaufruf mit fest kodierten Befehlen benutzt.

Hier wird von der eigentlich Grundform hin zum rekursiven Aufbau alles schrittweise aufgezeigt:

https://understanding-recursion.readthedocs.io/en/latest/13%20Koch%20Curves.html


Pumaq 
Beitragsersteller
 06.01.2025, 23:12

Danke!!!

KarlRanseierIII  07.01.2025, 00:16
@Pumaq

Gerne, ich habe allerdings übersehen, daß Du JS-turtle nutzen willst.

Im Kern geht es eigentlich immer darum, daß Du die rekursive Struktur als solches verstehst.

Nimm mal den Baum:

  • Der Stamm, nach Links ein kürzerer Stamm, nach Rechts ein kürzerer Stamm
  • Die kürzeren Stämme haben dann wieder noch kürzere Stämme wieder nach links/rechts im gleichen Winkel.
  • Am Ende folgt nur der Stamm (Real der Zweig)
tree(l,depth):
   if depth==1:
     forward(l)
   else
     forward(l)
     #jetzt rekursiv die Unterbäume)
     left(30);
     tree(l/2,depth-1)
     right(60)
     tree(l/2,depth-1)

Als Variation kannst Du mal unterschiedliche Winkel und Längenkürzungen nutzen (also auch für links/rechts verschieden), wenn Turtule es zulässt könnte man auch die Liniendicke von d abhängig machen (ebenso kleiner werden lassen).

Manchmal gibt es auch nicht die eine Lösung, ich erkläre das mal am Sierpinskidreieck (letzte Grafik).

Offensichtlich Hast Du ein Dreieck dann werden 3 Dreiecke in diesem erzeugt, dann wieder.

Ich könnte jetzt überlegen, wie ich die untergeordneten Dreiecke zeichne. Ich zeichne das untergeordnete Dreieck, laufe dann die volle Seitenlänge des größeren, drehe mich und wiederhole den Prozess, das Zeichnen wäre eine Rekursionseben tiefer.

Ich kann aber auch erst vorwärts gehen, mich drehen, dann den rekursiven Aufruf durchführen, dann wird das untergeordnete Dreieck links unten zuletzt gezeichnet.

Es gibt noch weitere Varianten, in der Regel versuchst Du aber dahin zu kommen, daß Du einen möglichst einfachen selbstähnlichen Vorgang hast, denn Du dann ggf. mehrfach wiederholst.