Koch Kurven und andere Fraktale (Graphische Benutzerschnittstelle für Einplatz-Anwendungen)
Verwenden Sie wieder die Turtlegraphics um eine sog. Koch Kurve zu zeichnen. Eine Koch Kurve lebt auf einer Strecke und bildet auf jeder Gerade eine Zacke.
//TODO
Das ganze geschieht natürlich rekursiv, sodass auf jeder Zacke wieder eine Zacke gezeichnet wird und so weiter:
//TODO
Der Code zur ersten Zacke sieht dann wie folgt aus:
zacke() {
hansi.draw();
hansi.turnLeft(60);
hansi.draw();
hansi.turnRight(120);
hansi.draw();
hansi.turnLeft(60);
hansi.draw(); }
Um die zweite Grafik zu erhalten, ist im ersten Code jeder Aufruf von hansi.draw() durch den Zacken-Code zu ersetzen. Es drängt sich auf, anstelle von hansi.draw() wieder die Funktion zacke() aufzurufen. Ersetzen Sie also die draw()-Aufrufe durch zacke(). Überlegen Sie sich, wie die Rekursion beendet werden kann. Die innerste Rekursion verwendet dann natürlich wieder den Aufruf hansi.draw(), denn irgendwo muss ja schließlich gezeichnet werden.
0 Kommentare
2 Lösung(en)
import math
import turtle
def koch(l):
s = 10
if l>s:
koch(l/3)
turtle.left(60)
koch(l/3)
turtle.right(120)
koch(l/3)
turtle.left(60)
koch(l/3)
else:
turtle.fd(l)
turtle.setpos(-200,0)
turtle.clear()
turtle.pencolor("brown")
l = 450.0
koch(l)
import turtle
def koch(l):
s = 10
if l>s:
koch(l/3)
turtle.left(60)
koch(l/3)
turtle.right(120)
koch(l/3)
turtle.left(60)
koch(l/3)
else:
turtle.fd(l)
# set turtle
turtle.bgcolor("orange")
turtle.setpos(-250,0)
turtle.clear()
turtle.pencolor("brown")
turtle.delay(0)
# start turtle
l = 450.0
koch(l)
# keep window open until user closes it
turtle.mainloop()
Lösung von: Alex Groeg (Freies Lernen)
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | |
Schwierigkeit: | k.A. |
Webcode: | esdm-5dfj |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |