#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time : 2019/2/11
"""
科赫雪花
在一单位长度的线段上对其三等分,将中间段直线换成一个去掉底边的等边三角形,
再在每条直线上重复以上操作,如此进行下去直到无穷,就得到分形Koch曲线。
"""
import turtle
[文档]def koch(p, order, size):
if order == 0:
p.forward(size)
else:
for angle in [60, -120, 60, 0]:
koch(p, order - 1, size / 3)
p.left(angle)
[文档]def draw_koch(n=3, polygon=6):
"""绘画科赫雪花
:param n: 迭代次数
:param polygon: 多边形雪花
"""
pen = turtle.Pen()
turtle.title('科赫雪花')
pen.speed(0)
r = pen.screen.canvwidth / 2
pen.penup()
pen.goto(-r, 0)
pen.pendown()
a = 180 - (polygon - 2) * 180 / polygon # 计算多边形旋转的角度,计算公式
# 多边形的内角和公式(n-2)*180/n
for i in range(polygon):
angle = a * (1 - i)
pen.setheading(angle)
koch(pen, n, r)
turtle.done()
if __name__ == '__main__':
draw_koch(3, 7)