Как поместить фигуру в круг с помощью черепахи? - PullRequest
0 голосов
/ 11 сентября 2018

Я получил простую фигуру, используя черепаху.Но проблема в том, что я не знаю, как поместить эту фигуру в круг.Код:

import turtle

painter = turtle.Turtle()
painter.pencolor("blue")
for i in range(50):
    painter.forward(100)
    painter.left(123*2)

painter.circle(70)
turtle.done()

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Немного тригонометрии в моей голове, и я вычислил угол. Не уверен, что я правильно понял радиус. Идеально вместо этого выяснить координаты центра, но быстрое и грязное решение:

import turtle

painter = turtle.Turtle()
painter.pencolor("blue")
for i in range(50):
    painter.forward(100)
    painter.left(123*2)

painter.right(123)

painter.right(90)
painter.penup()
painter.forward(10)
painter.left(90)
painter.pendown()

painter.circle(70)
turtle.done()
0 голосов
/ 12 сентября 2018

Другой подход заключается в усреднении позиций вашего произвольного изображения и последующем использовании этого среднего в качестве центра окружающего круга:

from turtle import Screen, Turtle, Vec2D

CIRCLE_RADIUS = 70
POLYGON_LENGTH = 100
POINTS = 50

screen = Screen()
painter = Turtle()
painter.speed('fastest')

painter.pencolor("blue")

total = Vec2D(0, 0)

for _ in range(POINTS):
    painter.forward(POLYGON_LENGTH)
    total += painter.position()
    painter.left(246)

x, y = total * (1.0 / POINTS)  # Vec2D can multiply by scalar but not divide

painter.penup()
painter.goto(x, y - CIRCLE_RADIUS)
painter.setheading(0)
painter.pendown()

painter.circle(CIRCLE_RADIUS)

screen.exitonclick()

enter image description here

0 голосов
/ 11 сентября 2018

Вам нужно будет переместить черепаху в правильное исходное положение. Обратите внимание, что это не центр круга! Он начинает рисовать окружность из крайнего правого положения - то есть, если вы хотите окружность с радиусом 70 вокруг (0,0), то переходите к (70,0), например ::

painter.penup()
painter.goto(70,0)
painter.pendown()
painter.circle(70)

К вашему сведению: я не могу сразу определить, где находится центр вашего рисунка, но я подозреваю, что он НЕ в (0,0). Во всех случаях вы должны поместить черепаху справа от центра вашей фигуры, смещенную на радиус круга, чтобы круг обошел ее.

...