我应该如何绘制 Peano 曲线?
How should i draw a Peano Curve?
这是我在 Visual Studio 代码中使用 python 乌龟绘制 peano 曲线的代码。我可以很好地获得 1 级,但除此之外,它并没有真正为后续级别正确地重复形状。有什么建议吗?
from turtle import *
def peano(level, length):
if level == 1:
print(rt(45), fd(length/3), rt(90), fd(length/3), lt(90), fd(length/3))
print(lt(90), fd(length/3), lt(90), fd(length/3), rt(90), fd(length/3))
print(rt(90), fd(length/3), rt(90), fd(length/3), lt(90), fd(length/3))
else:
peano(level-1, length/2)
rt(45)
peano(level-1, length/2)
rt(-45)
peano(level-1, length/2)
peano(2, 40)
在最基本的第 0 级,分形例程需要使用 forward()
(也称为 fd()
)简单地绘制一条直线。在第 1 级,它应该绘制构成分形的基本图案, 但是 使用分形例程本身来绘制线条,而不是 forward()
。上面的每个级别都做同样的事情。我们正在用分形图代替线条图:
from turtle import *
def peano(level, length):
if level == 0:
forward(length)
else:
angle = 90
peano(level-1, length/3)
right(angle)
peano(level-1, length/3)
for _ in range(2):
for _ in range(3):
left(angle)
peano(level-1, length/3)
angle = -angle
left(angle)
peano(level-1, length/3)
# Starting position and angle to fill our window
penup()
goto(-220, 220)
pendown()
right(45)
peano(2, 600)
exitonclick()
你不需要我添加的嵌套循环,你可以明确地写出步骤:
else:
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)
这是我在 Visual Studio 代码中使用 python 乌龟绘制 peano 曲线的代码。我可以很好地获得 1 级,但除此之外,它并没有真正为后续级别正确地重复形状。有什么建议吗?
from turtle import *
def peano(level, length):
if level == 1:
print(rt(45), fd(length/3), rt(90), fd(length/3), lt(90), fd(length/3))
print(lt(90), fd(length/3), lt(90), fd(length/3), rt(90), fd(length/3))
print(rt(90), fd(length/3), rt(90), fd(length/3), lt(90), fd(length/3))
else:
peano(level-1, length/2)
rt(45)
peano(level-1, length/2)
rt(-45)
peano(level-1, length/2)
peano(2, 40)
在最基本的第 0 级,分形例程需要使用 forward()
(也称为 fd()
)简单地绘制一条直线。在第 1 级,它应该绘制构成分形的基本图案, 但是 使用分形例程本身来绘制线条,而不是 forward()
。上面的每个级别都做同样的事情。我们正在用分形图代替线条图:
from turtle import *
def peano(level, length):
if level == 0:
forward(length)
else:
angle = 90
peano(level-1, length/3)
right(angle)
peano(level-1, length/3)
for _ in range(2):
for _ in range(3):
left(angle)
peano(level-1, length/3)
angle = -angle
left(angle)
peano(level-1, length/3)
# Starting position and angle to fill our window
penup()
goto(-220, 220)
pendown()
right(45)
peano(2, 600)
exitonclick()
你不需要我添加的嵌套循环,你可以明确地写出步骤:
else:
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)