我正在尝试制作一个需要尽可能少的时间来完成的希尔伯特曲线。这是到目前为止的代码(使用海龟图形和递归改编自希尔伯特曲线)
from turtle import *
from win32api import GetSystemMetrics
def hilbert_curve(amt, facing, n, start_at_corner=True) -> None:
if start_at_corner:
ht()
up()
goto(x=(- (GetSystemMetrics(0) - 30) / 2), y=(- (GetSystemMetrics(1) / 2 - 50)))
down()
if n < 1:
return
try: # Only here because I find error messages annoying
left(facing * 90)
hilbert_curve(amt, - facing, n - 1, False)
fd(amt)
right(facing * 90)
hilbert_curve(amt, facing, n - 1, False)
fd(amt)
hilbert_curve(amt, facing, n - 1, False)
right(facing * 90)
fd(amt)
hilbert_curve(amt, - facing, n - 1, False)
left(facing * 90)
except Terminator:
from sys import exit
exit()
screen = getscreen()
speed(0)
hilbert_curve(5, 1, 15)
screen.mainloop()
这个问题是乌龟做了很多不必要的转弯 - 在开始和所有连接时 - 我理解为什么会发生这种情况,但我不知道如何解决它。
如果我可以在上面的代码中更改任何其他内容以使海龟更快,欢迎提出建议!