Wie kann ich ein Fraktale mit js-turtle erstellen?
Also ich hab ein Projekt den ich jetzt in zwei Tagen abgeben muss, jedoch habe ich bis jetzt nichts gemacht, weil ich auch nichts über diesen Thema verstehe. Ihr seid jetzt wirklich meine letzte Hoffnung! Also wir müssen die Fraktale erstellen die sie im Anhang sehen mit der Seite js-turtle | Documentations und wir müssen auch rekursive Fraktale mit hinein codieren, aber ich weiß wirklich nicht wie es klappen soll. Ich hoffe wirklich das ihr mir helfen könnt!!
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
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.
Danke!!!