Created
July 14, 2021 13:55
-
-
Save morgulbrut/189abed95e95ce787385829826a24b59 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import turtle | |
def curve(iteration): | |
''' | |
https://de.wikipedia.org/wiki/Drachenkurve#Pseudocode | |
Die Drachenkurve 0. Ordnung besteht nur aus der Anfangslinie „nach oben“. | |
Die Drachenkurve 1. Ordnung ist R (Anfangslinie, dann Rechtswende und eine weitere Linie) | |
Berechne eine Drachenkurve der Ordnung i folgendermaßen: | |
Hänge an eine Drachenkurve der Ordnung i-1 ein R an | |
Hänge an das Ergebnis erneut die Drachenkurve der Ordnung i-1, wobei das mittlere Zeichen durch L ersetzt wird. | |
''' | |
cur = "" | |
if iteration == 0: | |
pass | |
elif iteration == 1: | |
cur += "R" | |
else: | |
c = curve(iteration-1) # Kurve Ordnung i-1 | |
# Kurve Ordnung i-1 bei das mittlere Zeichen durch ein L ersetzt wurde | |
cl = c[:int(len(c)/2)] + "L" + c[int(len(c)/2)+1:] | |
cur = c + "R" + cl # Kurve Ordnung i+1 | |
return cur | |
def paint_round(curve, length): | |
for l in curve: | |
if l == 'L': | |
turtle.circle(-length, 90, 36) | |
else: | |
turtle.circle(length, 90, 36) | |
def paint(curve, length, angle): | |
turtle.left(angle) | |
turtle.forward(length) | |
for l in curve: | |
if l == 'L': | |
turtle.left(angle) | |
turtle.forward(length) | |
else: | |
turtle.right(angle) | |
turtle.forward(length) | |
if __name__ == '__main__': | |
turtle.showturtle() | |
turtle.hideturtle() | |
turtle.speed(0) | |
turtle.pensize(2) | |
colors = ['red', 'green', 'blue'] | |
for i in range(10, -1, -1): | |
print("Painting curve({}) in {}".format(i, colors[i % len(colors)])) | |
print("L-System:{}\n".format(curve(i))) | |
turtle.penup() | |
turtle.setpos(0, 0) | |
turtle.pendown() | |
turtle.pencolor(colors[i % len(colors)]) | |
paint(curve(i), 4, 75) | |
turtle.done() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment