我应该如何绘制 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)