我正在尝试使用Turtle库递归绘制分形。我有一个函数Koch(step, degree)
,它接受步长和度数;在函数内部,它用Koch(step/3, degree-1)
调用自己来递归地构建类似分形的边。
当我启用动画时,一切都运行良好,但是当我尝试切换tracer(False)
以加快更高级别的度数绘图时,它似乎最后会跳过动画的一部分。
我有什么问题吗?我正在尝试为动画创建一堆帧,所以我需要它们尽可能快地绘制,否则我将永远无法完成项目。
答案 0 :(得分:1)
至少有几种方法可以解决这个问题。一种是在绘图结束时将tracer()
重置为原始值。即tracer(1)
。 (正如您所发现的,为了简化操作,您可以使用tracer(False)
来隐藏绘图,并使用tracer(True)
将其重新打开。)
另一种方法是在绘图结束时调用update()
。要么强制执行最终的绘图步骤。
使用python-with-science中的koch雪花示例模拟您的问题,因为您没有提供任何代码。无需重新启动tracer()
或致电update()
:
from turtle import *
def koch(distance, order):
if order > 0:
for angle in [60, -120, 60, 0]:
koch(distance / 3, order - 1)
left(angle)
else:
forward(distance)
# Choose size
size = 400
order = 3
# Ensure snowflake is centered
penup()
backward(size / 1.732)
left(30)
pendown()
# Make it fast
tracer(False)
hideturtle()
# Three Koch curves
for _ in range(3):
koch(size, order)
right(120)
mainloop()
现在只需略微更改结尾:
# Three Koch curves
for _ in range(3):
koch(size, order)
right(120)
# Make the last parts appear
update()
mainloop()