Я хотел бы воспроизвести прекрасную марокканскую мозаику, как видно здесь .Код использует Turtle.Я хотел бы перевести это на Tkinter.Мне повезло, изменив код в ответе здесь , чтобы нарисовать на холсте.Конечно, здесь много чего не хватает, так как нет никаких линий, нарисованных от начала координат.Я не знаю, как это сделать.Одна мысль состоит в том, что я мог бы наложить n многоугольников, каждый из которых был повернут примерно на 2 * pi / n градусов.Это все еще оставляет проблему получения линии от начала координат до начальной и конечной точек для каждого многоугольника.Я не думаю, что это решило бы все, но это хорошее начало.
Или, может быть, проще как-то заставить полигонвращаться вокруг центра?
from tkinter import *
import math
canvas_width = 400
canvas_height =400
python_green = "#476042"
def polygon(canvas,sides=10, radius=100, rotation=0, translation=None, outline=python_green, fill='White', width = 1):
one_segment = math.pi * 2 / sides
points = [
(math.sin(one_segment * i + rotation) * radius + canvas_width/2,
math.cos(one_segment * i + rotation) * radius + canvas_height/2)
for i in range(sides)]
if translation:
points = [[sum(pair) for pair in zip(point, translation)]
for point in points]
canvas.create_polygon(points, outline=outline, fill='', width=width)
master = Tk()
w = Canvas(master, width=canvas_width, height=canvas_height)
w.pack()
polygon(w,outline='green', width=2)
mainloop()