Как я могу построить наиболее эффективную кривую Гильберта с помощью Turtle?Python

Программы на Python
Ответить
Anonymous
 Как я могу построить наиболее эффективную кривую Гильберта с помощью Turtle?

Сообщение Anonymous »

Я пытаюсь построить кривую Гильберта, на построение которой уходит как можно меньше времени. Вот код на данный момент (адаптированный из кривой Гильберта с использованием черепашьей графики и рекурсии)

Код: Выделить всё

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()
Проблема в том, что черепаха делает много ненужных поворотов - в начале и на всех соединениях - как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/699 ... ith-turtle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»