Просмотреть все координаты, используемые в чертеже круга черепахи () - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу нарисовать 1 нить ДНК с азотистыми основаниями: маленький кусочек нити, одно основание, маленький кусочек нити, другое основание и так далее.В этом порядке.Но когда вы прерываете circle() (в данном случае полукруг, прядь), чтобы нарисовать что-то еще, например, прямую линию (это будет основание), угол circle() изменяется.И я не могу придумать, как изменить это обратно.

Итак, более простой способ - сделать полукруг, нарисовать линию и продолжить полукруг, кажется, это просто goto() кординат и нарисовать то, чтоты хочешь там.

Но вычислить все точные координаты круга, для каждого другого круга, в случае, если мне нужно больше, было бы долго.

Есть ли какой-нибудь способ заставить черепаху или любое другое вещество / программное обеспечение возвращать в качестве вывода все корникаты круга, который я нарисовал / закодировал?

Например, если бы я нарисовал это circle():

from turtle import *

t = Turtle()

t.seth(45)
t.circle(100,90)
t.circle(-100,90)

, могла бы черепаха вернуть координаты, использованные для ее создания?

И вот примерчто я подразумеваю под созданием круга, используя только его координаты:

from turtle import *

t = Turtle()

def got(x,y,d) :        # to use goto more easily
    t.penup()
    t.goto(x,y)
    t.pendown()
    t.seth(d)

x=0
y=0
d=0
megalist = [5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,1,1,-1,0,0,0,0,0-1,-1,-1,-1,-1,-1,-1,-1,-1,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,]

for i in megalist :
    x = x + i
    y= y +4
    got(x,y,d)
    t.forward(-1)

1 Ответ

1 голос
/ 03 апреля 2019

будет возможно для черепахи вернуть координаты, использованные для ее создания?

Да.Есть несколько *_poly() методов, обычно используемых для создания пользовательских курсоров, которые можно использовать для выполнения того, что вы описываете:

from turtle import Screen, Turtle

screen = Screen()
turtle = Turtle(visible=False)
turtle.penup()

turtle.seth(45)

turtle.begin_poly()
turtle.circle(100, 90)
turtle.circle(-100, 90)
turtle.end_poly()

polygon = turtle.get_poly()

print(polygon)

for point in polygon:
    turtle.goto(point)
    turtle.pendown()

screen.exitonclick()

КОНСОЛЬНЫЙ ВЫХОД

> python3 test.py
((0.00,0.00), (13.96,17.51), (23.68,37.68), (28.66,59.51), (28.66,81.91),
(23.68,103.74), (13.96,123.91), (0.00,141.42), (-13.96,158.93),
(-23.68,179.10), (-28.66,200.94), (-28.66,223.33), (-23.68,245.16),
(-13.96,265.34), (0.00,282.84))
>

ВЫВОД ЭКРАНА

enter image description here

при прерывании круга (), (...), чтобы нарисовать что-то ещеКак прямая линия (...), угол окружности () изменяется.И я не могу придумать, как изменить это обратно.

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

from turtle import Screen, Turtle

screen = Screen()

turtle = Turtle(visible=False)
turtle.speed('fastest')  # because I have no patience

turtle.setheading(45)

for extent in range(9):
    turtle.circle(100, 10)

    heading = turtle.heading()

    turtle.setheading(0)
    turtle.forward(10)
    turtle.backward(10)

    turtle.setheading(heading)

for extent in range(9):
    turtle.circle(-100, 10)

    heading = turtle.heading()

    turtle.setheading(180)
    turtle.forward(10)
    turtle.backward(10)

    turtle.setheading(heading)

screen.exitonclick()

ВЫХОД ЭКРАНА

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...