Zeichnen Sie mit Python Turtle eine Koch-Kurve

Ich habe versucht, eine Koch-Kurve mit Bezug auf den Algorithmus und die Datenstruktur für die Erfassung des Programmierwettbewerbs zu zeichnen

Screenshot 2015-03-30 11.12.56.png

from math import cos, sin, pi

class Point:
    def __init__(self, x=0.0, y=0.0):
        self.x = x
        self.y = y

def koch_pos(n, a, b):
    if n == 0:
        return
    th = pi * 60.0 / 180.0

    s, t, u = Point(0.0, 0.0), Point(0.0, 0.0), Point(0.0, 0.0)
    s.x = (2.0 * a.x + 1.0 * b.x) / 3.0
    s.y = (2.0 * a.y + 1.0 * b.y) / 3.0
    t.x = (1.0 * a.x + 2.0 * b.x) / 3.0
    t.y = (1.0 * a.y + 2.0 * b.y) / 3.0
    u.x = (t.x - s.x) * cos(th) - (t.y - s.y) * sin(th) + s.x
    u.y = (t.x - s.x) * sin(th) + (t.y - s.y) * cos(th) + s.y

    for pos in koch_pos(n - 1, a, s):
        yield pos
    yield s.x, s.y
    for pos in koch_pos(n - 1, s, u):
        yield pos
    yield u.x, u.y
    for pos in koch_pos(n - 1, u, t):
        yield pos
    yield t.x, t.y
    for pos in koch_pos(n - 1, t, b):
        yield pos


def koch(n, a, b):
    yield a.x, a.y
    for pos in koch_pos(n, a, b):
        yield pos
    yield b.x, b.y

if __name__ == "__main__":
    from turtle import *
    a = Point(-500.0, 0.0)
    b = Point(500.0, 0.0)
    n = 5
    t = Turtle()

    first = True
    for x, y in koch(n, a, b):
        if first:
            first = False
            t.penup()
            t.setpos(x, y)
            t.pendown()
        else:
            t.setpos(x, y)

    exitonclick()


Recommended Posts

Zeichnen Sie mit Python Turtle eine Koch-Kurve
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Zeichnen Sie eine netCDF-Datei mit Python
[Python] Kurvenanpassung mit Polypolyse
Zeichnen Sie eine Illustration mit Python + OpenCV
Zeichne Riapnov Fractal mit Python, matplotlib
Zeichnen Sie einen Pfeil (Vektor) mit opencv / python
[Python] Zeichnen eines Wirbelmusters mit einer Schildkröte
Zeichnen Sie Nozomi Sasaki in Excel mit Python
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
Spielen Sie mit 2016-Python
Getestet mit Python
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
[Python] Zeichnen Sie mit Dash Cytoscape ein gerichtetes Diagramm
[Python] Zeichnen mehrerer Diagramme mit Matplotlib
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
[Python] Zeichnen Sie ein Qiita-Tag-Beziehungsdiagramm mit NetworkX
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
1.1 Erste Schritte mit Python
Binarisierung mit OpenCV / Python
3. 3. KI-Programmierung mit Python
Kernel-Methode mit Python
Nicht blockierend mit Python + uWSGI
Scraping mit Python + PhantomJS
Infomap Python-Zeichencode
Tweets mit Python posten
Fahren Sie WebDriver mit Python
Verwenden Sie Mecab mit Python 3
Sprachanalyse mit Python
Denken Sie an Yaml mit Python
Kinesis mit Python betreiben
Erste Schritte mit Python