Koch Kurve Plotten?
Hallo an alle,
ich habe ein kleines Python Skript geschrieben um die Koch Kurve zu plotten jedoch ist das Ergebnis nicht ganz das was ich mir erhofft habt. irgendwie wird nur ein Teil der Schneeflocke geplottet und ich weiß nicht wieso. Vielleicht kann mir ja jemand helfen. Mein Code sieht wie folgt aus
import numpy as np
import matplotlib.pyplot as plt
def KochKurve(A,B,depth):
L = []
if depth == 0:
L.append(A)
L.append(B)
else:
R = np.array([[np.cos(np.pi/3), -np.sin(np.pi/3)],[np.sin(np.pi/3), np.cos(np.pi/3)]])
C = A + (B-A)/3
D = A + 2*(B-A)/3
E = C + R@(D-C)
L = KochKurve(A,C,depth-1) + KochKurve(C,E,depth-1) + KochKurve(E,D,depth-1) + KochKurve(D,B,depth-1)
return L
if __name__ == "__main__":
L = KochKurve(np.array([0,0]),np.array([1,0]),4)
L = np.array(L)
plt.plot(L[:,0],L[:,1])
plt.axis("scaled")
plt.axis("off")
plt.show()
Das hier ist meine Ausgabe:
2 Antworten
Das ist eben die Kochkurve. Eine Schneeflocke besteht aus drei solchen Kurven. Anstatt mit einer Strecke AB musst du mit einem Dreieck beginnen oder am Ende drei solche Kurven zusammenfügen.
Kochkurve:
Kochsche Schneeflocke:
Man muss mit einem Dreieck beginnen und nicht mit einem Sechseck.
Ich habe nochmal nachgeschaut und meine Antwort ausgebessert. https://de.wikipedia.org/wiki/Koch-Kurve
Deine Kochkurve sieht korrekt aus, die Schneeflocke ergibt sich aus einem gleichseitigen Dreieck, wobei jede Seite als Kochkurve tieriert wird.
Interessante Umsetzung übrigens, ich hätte das ja eher als Lindemayer-System gemacht.
Ah okay😂😂 dann hab ich ja nichts falsch gemacht. In der Aufgabe stand auch nichts von einer Schneeflocke. Ich versuch es trotzdem mal mit einem Sechseck sieht finde ich schöner aus. Vielen Lieben Dank für die schnelle Antwort
Lg