Python 在希尔伯特曲线中,如何将库turtle从更改为matplotlib?

Python 在希尔伯特曲线中,如何将库turtle从更改为matplotlib?,python,matplotlib,recursion,python-turtle,hilbert-curve,Python,Matplotlib,Recursion,Python Turtle,Hilbert Curve,我真的不知道如何解决保持递归的问题,我在研究turtle库,但在asignature中,他们要求使用matplotlib,所以我不确定如何使用它 from turtle import Turtle def hilbert_curve(turtle, A, parity, n): if n == 1: hilbert_curve_draw(turtle, A, parity) else: turtle.right(parity

我真的不知道如何解决保持递归的问题,我在研究turtle库,但在asignature中,他们要求使用matplotlib,所以我不确定如何使用它

from turtle import Turtle


def hilbert_curve(turtle, A, parity, n):

    if n == 1:
        hilbert_curve_draw(turtle, A, parity)
        
    else:
        turtle.right(parity * 90)
        hilbert_curve(turtle, A, - parity, n - 1)
        
        turtle.forward(A)
        turtle.left(parity * 90)
        hilbert_curve(turtle, A, parity, n - 1)
        
        turtle.forward(A)
        hilbert_curve(turtle, A, parity, n - 1)
        turtle.left(parity * 90)
        
        turtle.forward(A)
        hilbert_curve(turtle, A, - parity, n - 1)
        turtle.right(parity * 90)


def hilbert_curve_draw(turtle, A, parity):
    turtle.right(parity * 90)
    turtle.forward(A)
    turtle.left(parity * 90)
    turtle.forward(A)
    turtle.left(parity * 90)
    turtle.forward(A)
    turtle.right(parity * 90)
    
yertle = Turtle()

yertle.hideturtle() 
yertle.penup() 
yertle.goto(-200, 200)   
yertle.pendown() 
yertle.speed('fastest')
 
hilbert_curve(yertle, 60, 1, 3)

乌龟以其位置和方向保持内部状态。这些可以用局部变量表示。方向可以是元组
(xdir,ydir)
,表示长度为1的向量。向左旋转将使向量与旋转矩阵相乘。当仅使用坐标为
-1
0
1
的向量时,可以简化旋转

下面的代码实现了这些想法。为了提高可读性,
a
已重命名为
length
,而
n
已重命名为
levels

从matplotlib导入pyplot作为plt
def左转(方向、奇偶校验):
返回(定向[1]*奇偶校验,-定向[0]*奇偶校验)
def右转(方向、奇偶性):
返回左转弯(方向-奇偶性)
def绘制线(x0、y0、方向、长度):
x1=x0+方向[0]*长度
y1=y0+方向[1]*长度
plt.绘图([x0,x1],[y0,y1],color='navy')
返回x1,y1
定义希尔伯特曲线图(x、y、长度、方向、奇偶性):
方向=右转(方向,奇偶性)
x、 y=绘制线(x,y,方向,长度)
方向=左转(方向,奇偶校验)
x、 y=绘制线(x,y,方向,长度)
方向=左转(方向,奇偶校验)
x、 y=绘制线(x,y,方向,长度)
方向=右转(方向,奇偶性)
返回x、y、方向
def hilbert_曲线(x、y、长度、方向、奇偶性、级别):
如果级别==1:
x、 y,方向=希尔伯特曲线图(x,y,长度,方向,奇偶性)
其他:
方向=右转(方向,奇偶性)
x、 y,方向=希尔伯特曲线(x,y,长度,方向,-奇偶性,水平-1)
x、 y=绘制线(x,y,方向,长度)
方向=左转(方向,奇偶校验)
x、 y,方向=希尔伯特曲线(x,y,长度,方向,奇偶性,级别-1)
x、 y=绘制线(x,y,方向,长度)
x、 y,方向=希尔伯特曲线(x,y,长度,方向,奇偶性,级别-1)
方向=左转(方向,奇偶校验)
x、 y=绘制线(x,y,方向,长度)
x、 y,方向=希尔伯特曲线(x,y,长度,方向,-奇偶性,水平-1)
方向=右转(方向,奇偶性)
返回x、y、方向
希尔伯特曲线(x=-200,y=200,长度=5,方向=(1,0),奇偶性=1,水平=5)
plt.轴(“相等”)#在x和y方向上的长度相同
plt.show()