分形几何
分形几何图形的整体与它的局部具有很相似的特点。
# 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
当level=0时,绘制的是一个等边三角形:
PS: source, python123.io