Python项目实践:科赫曲线、科赫雪花

分形几何

分形几何图形的整体与它的局部具有很相似的特点。
Python项目实践:科赫曲线、科赫雪花_第1张图片
Python项目实践:科赫曲线、科赫雪花_第2张图片
Python项目实践:科赫曲线、科赫雪花_第3张图片
Python项目实践:科赫曲线、科赫雪花_第4张图片
Python项目实践:科赫曲线、科赫雪花_第5张图片

# kochDrawV1.py
import turtle
def koch(size, n):
    if n == 0:
        turtle.forward(size)
    else:
        for angle in [0, 60, -120, 60]:
            turtle.left(angle)
            koch(size / 3, n - 1)

def main():
    turtle.setup(800, 400)
    turtle.penup()
    turtle.goto(-300, -50)
    turtle.pendown()
    turtle.pensize(2)
    koch(600, 3)
    turtle.hideturtle()
    turtle.done()

main()

看一下执行顺序:
angle = {
     int} 0
n = {
     int} 3 # angle=0 koch(3)
size = {
     int} 600

angle = {
     int} 0
n = {
     int} 2  # angle=0 koch(2)
size = {
     float} 200.0

angle = {
     int} 0
n = {
     int} 1  # angle=0 koch(1)
size = {
     float} 66.66666666666667

angle = {
     int} 60
n = {
     int} 1  # angle=60 koch(1)
size = {
     float} 66.66666666666667

angle = {
     int} -120
n = {
     int} 1  # angle=-120 koch(1)
size = {
     float} 66.66666666666667

angle = {
     int} 60
n = {
     int} 1  # angle=60 koch(1)
size = {
     float} 66.66666666666667

angle = {
     int} 0
n = {
     int} 2  # angle=0 koch(2) 下一个轮回
size = {
     float} 200.0

angle = {
     int} 60
n = {
     int} 2  # angle=60 koch(2) 
size = {
     float} 200.0

Python项目实践:科赫曲线、科赫雪花_第6张图片
Python项目实践:科赫曲线、科赫雪花_第7张图片
当level=0时,绘制的是一个等边三角形:
Python项目实践:科赫曲线、科赫雪花_第8张图片
Python项目实践:科赫曲线、科赫雪花_第9张图片
Python项目实践:科赫曲线、科赫雪花_第10张图片

PS: source, python123.io

你可能感兴趣的:(koch雪花,python)