#python #python-3.x #shapes #python-turtle
#python #python-3.x #фигуры #python-turtle
Вопрос:
я хочу определить эту функцию таким образом, чтобы пользователь мог вводить любое количество сторон, длину и координаты. Проблема, с которой я сталкиваюсь, заключается в том, что я хочу, чтобы координаты были центром многоугольника, а не углом, но я не уверен, как это сделать. Ниже приведен мой текущий код
import turtle
WIDTH,HEIGHT= 1200,700
screen = turtle.Screen()
screen.setup(WIDTH,HEIGHT)
def draw_polygon(x,y,sides,length):
pen=turtle.Turtle()
pen.hideturtle()
pen.speed(-1)
pen.penup()
pen.setpos(x,y)
pen.pendown()
for i in range (0,sides):
pen.fd(length)
pen.right(360/sides)
while True:
s=int(input())
l=int(input())
draw_polygon(0,0,s,l)
Ответ №1:
Черепаха начинает рисовать с заданной позиции, поскольку вы рисуете по часовой стрелке, это означает, что заданная позиция всегда будет верхним левым углом многоугольника. Чтобы сделать позицию, которую вы передаете в функцию, центром, вы должны сместить начальную позицию черепахи.
Пример смещения для пятиугольника
Смещение по оси x всегда будет составлять половину длины одной стороны, приближаясь к нулю, когда многоугольник приближается к окружности.
Смещение по оси y будет радиусом многоугольника.
В вашем коде замените заданную позицию, чтобы соответствующим образом сместить начальную позицию черепахи.
from math import pi
startPosX = x - length/2
startPosY = y length * sides / (2*pi)
pen.setpos(startPosX,startPosY)
В боковой заметке вы можете добавить:
turtle.Screen().exitonclick()
в конце drawPolygon() вместо вашего цикла while, чтобы сохранить экран после ввода ваших значений.