为什么它不会画出Koch曲线

时间:2017-06-08 20:13:54

标签: python turtle-graphics

import turtle 
import random

screen = turtle.Screen()

X = 400
Y = 400
screen.setup(X, Y)

def drawKoch(ttl, length, generation):
    if (generation == 0 ):
        ttl.fd(generation)
        return
    else:
        drawKoch(ttl, length - 1, generation / 3)
        ttl.lt(60)
        drawKoch(ttl, length - 1, generation / 3)
        ttl.lt(120)
        drawKoch(ttl, length - 1, generation / 3)
        ttl.lt(60)
        drawKoch(ttl, length - 1, generation / 3)


turtle.clearscreen()
screen.reset()
screen.screensize(X, Y)


ttl = turtle.Turtle()
ttl.speed(10)
ttl.penup()
ttl.setposition(-X/2 + 10, -Y/2 + 50)
ttl.pendown()

sides = 3
gens = 3
length = 300
angle = ((sides - 2) * 180) / sides

for i in range(sides):
    drawKoch(ttl, length, gens)
    ttl.left(180-angle)

我不确定为什么它不能画出koch曲线。我不久前才开始学习这门语言。我需要一些助手.........希望你们知道这个可以帮助我

1 个答案:

答案 0 :(得分:1)

一堆问题:

  • 您正在length - 1, generation / 3进行递归,应该是length / 3, generation - 1

  • 因为这个,generation应该是3,2,1,0(停止)而不是3,1.0,0.333,0.111,0.037,0.01234,0.00411,0.00137,...它永远不会等于#34; 0,所以你的函数只是不断递归

  • 您在generation

  • 中使用的是length而不是ttl.fd()
  • ttl.lt(120)应为ttl.rt(120)