jtyoui.fractal.KochSnowflake 源代码

#!/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)