Erstellen Sie eine fraktale Figur mit Python Teil1 (Shelpinsky's Gasket)

1. Was ist eine fraktale Figur?

Eine fraktale Figur ist dieselbe wie die ursprüngliche Figur, egal wie stark sie vergrößert ist. Die Shelpinsky-Dichtung, eine typische fraktale Figur, ist unten dargestellt. fractal1.gif

2. Erstellen einer Shellpin-Skidichtung

fractal.py


import matplotlib.pyplot as plt
import matplotlib.patches as pat
import math

#triangle = [(x1,y1),(x2,y2),(x3,y3)]

#Geben Sie die Koordinaten des Dreiecks im Eingabedreieck aus
def return_triangle(triangle):
    x1 = (triangle[0][0] + triangle[1][0])/2
    y1 = (triangle[0][1] + triangle[1][1])/2
    x2 = (triangle[1][0] + triangle[2][0])/2
    y2 = (triangle[1][1] + triangle[2][1])/2
    x3 = (triangle[2][0] + triangle[0][0])/2
    y3 = (triangle[2][1] + triangle[0][1])/2
    new_triangle = [(x1,y1),(x2,y2),(x3,y3)]
    return new_triangle

#Geben Sie den Abstand zwischen zwei Punkten aus
def distance(p1,p2):
    return math.sqrt((p1[0]-p2[0])**2 + (p1[1]-p2[1])**2)

#Gibt ein Dreieck aus, das aus den beiden Punkten besteht, die dem Punkt p an den Punkten p und dem Dreieck am nächsten liegen
def select_neighbor_points(p, triangle):
    distance1 = distance(p, triangle[0])
    distance2 = distance(p, triangle[1])
    distance3 = distance(p, triangle[2])
    if distance1 > distance2:
        if distance1 > distance3:
            return [p, triangle[1], triangle[2]]
        else:
            return [p, triangle[0], triangle[1]]
    else:
        if distance2 > distance3:
            return(p, triangle[0],triangle[2])
        else:
            return(p, triangle[0],triangle[1])
            
#Generieren Sie eine fraktale Figur. Je größer die Anzahl der Iterationen ist, desto komplizierter
def produce_fractal1(triangle, iteration):
    if iteration == 0: return 0
    p1 = triangle[0]
    p2 = triangle[1]
    p3 = triangle[2]
    new_triangle = return_triangle(triangle)
    p = pat.Polygon(xy = new_triangle,fc = "white", ec = "black")
    ax.add_patch(p)
    produce_fractal1(select_neighbor_points(p1,new_triangle), iteration-1)
    produce_fractal1(select_neighbor_points(p2,new_triangle), iteration-1)
    produce_fractal1(select_neighbor_points(p3,new_triangle), iteration-1)

triangle = [(0.2, 0.2), (0.8, 0.2), (0.5, 0.8)] #Anfängliche Dreieckskoordinaten
fig = plt.figure(figsize=(5, 5))
ax = fig.add_subplot(1,1,1)
p = pat.Polygon(xy = triangle,fc = "white", ec = "black")
ax.add_patch(p)
produce_fractal1(triangle,6)
fig.savefig("./fractal.png ") #Bild speichern

Einfache Implementierung mit rekursiver Verarbeitung. Die Ausführung erfolgte mit Jupyter.

fractal.py


produce_fractal1(triangle,iteration)

Durch Erhöhen der Anzahl der Iterationen werden Dreiecke tiefer erzeugt.

3. Zusammenfassung

Durch die gute Implementierung des rekursiven Prozesses konnte ich eine Shelpinsky-Casquette erstellen. Durch Ändern des Inhalts des rekursiven Prozesses konnte ich andere fraktale Figuren erstellen.

Recommended Posts

Erstellen Sie eine fraktale Figur mit Python Teil1 (Shelpinsky's Gasket)
Erstellen Sie solche Testdaten mit Python (Teil 1)
Bildverarbeitung mit Python (Teil 2)
Python mit freeCodeCamp Teil1 studieren
Angrenzende Bilder mit Python Teil 1
Schaben mit Selen + Python Teil 1
Erstellen Sie ein 3D-GIF mit Python3
Python studieren mit freeCodeCamp part2
Bildverarbeitung mit Python (Teil 1)
Nampre mit Python lösen (Teil 2)
Bildverarbeitung mit Python (3)
Schaben mit Selen + Python Teil 2
Spielen Sie handschriftliche Zahlen mit Python Part 1
Erstellen Sie Awaitable mit der Python / C-API
[Mit Python automatisiert! ] Teil 1: Datei einstellen
Erstellen Sie eine virtuelle Umgebung mit Python!
Automatisieren Sie einfache Aufgaben mit Python Part0
[Mit Python automatisiert! ] Teil 2: Dateivorgang
Erstellen Sie Github-Seiten mit Lektor Part 1
Zeichne Riapnov Fractal mit Python, matplotlib
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen Sie mit python3 eine Wortwolke aus Ihrem Tweet
Spielen Sie handschriftliche Zahlen mit Python Teil 2 (identifizieren)
FM-Modulation und Demodulation mit Python Part 3
Verarbeiten Sie Pubmed .xml-Daten mit Python [Teil 2]
Erstellen Sie mit Python + PIL ein Dummy-Image.
Automatisieren Sie einfache Aufgaben mit Python Part1 Scraping
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Erstellen Sie schnell eine Excel-Datei mit Python #python
Fraktal zum Erstellen und Spielen mit Python
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Bearbeiten von Azure CosmosDB aus Python Part.2
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 1)
FM-Modulation und Demodulation mit Python Part 2
[Teil1] Scraping mit Python → Organisieren Sie bis zu CSV!
Erstellen Sie eine englische Wort-App mit Python
Erstellen Sie mit tkinter [Python] einen Rahmen mit transparentem Hintergrund.
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Erstellen Sie eine App, die Schüler mit Python errät
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
Erstellen Sie mit Minette für Python einen LINE BOT
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
[Hinweis] Erstellen Sie mit Python eine einzeilige Zeitzonenklasse
Sie können auch mit Python problemlos eine GUI erstellen
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erstellen Sie eine Farbleiste mit Python + Qt (PySide)
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Erstellen Sie ein Bild mit Zeichen mit Python (Japanisch)
Schritte zum Erstellen eines Twitter-Bots mit Python
So messen Sie die Ausführungszeit mit Python Teil 1
Erstellen Sie mit Python einen Entscheidungsbaum von 0 (1. Übersicht)
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Erstellen Sie mit Python eine Datei im Photoshop-Format (.psd)