Получить Python черепаху лицом к лицу в направлении линии, которая строится - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь заставить форму черепахи следовать направлению линии.

У меня есть простая парабола, и я хочу, чтобы форма черепахи следовала направлению линии - когда график поднимается вверхЧерепаха смотрит вверх, а когда график опускается, черепаха смотрит вниз.
Я использую goto() для положения черепахи и x=x+1 для положения x на графике:

t.goto(x,y)
t.right(??) - this?
t.left(??) - this?
t.setheading(??) or this?

Каков наилучший метод для достижения этой цели?Когда я попытался использовать t.right() в цикле while (я повторяю цикл до тех пор, пока x не будет завершен), черепаха продолжает вращаться по кругу, двигаясь, что не , что я хочу.


Всё ещё не понимаю.Я добавил дополнительный код, который был предложен - вот РЕДАКТИРОВАТЬ и полный код того, что я пытаюсь достичь ...

Я использую физическую формулу для траектории (я использовал это, чтобы я знал свои значениявыводится правильно).http://www.softschools.com/formulas/physics/trajectory_formula/162/

import math
import turtle
import time
w=turtle.Turtle()


i=0
angle=66.4
velocity=45.0
g=9.8

t=math.tan(math.radians(angle))
c=math.cos(math.radians(angle))

turtle.delay(9)

w.shape("turtle")
w.setheading(90)

while i < 150:
    start = i * t
    middle = g*(i**2)
    bottom =(2*(velocity**2)*c**2)
    total = start-middle/bottom
    print(total)

    w.setheading(turtle.towards(i,total))
    w.goto(i,total)

    i=i+1

turtle.exitonclick()

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Я согласен с @NicoSchertler, что арктангенс производной - это путь математически.Но если это только для хороших визуальных эффектов, есть более простой способ.Мы можем комбинировать методы черепахи setheading() и towards(), постоянно устанавливая направление черепахи к следующей позиции непосредственно перед тем, как мы туда доберемся:

from turtle import Screen, Turtle

turtle = Turtle(shape='turtle', visible=False)
turtle.penup()
turtle.goto(-20, -400)
turtle.pendown()
turtle.setheading(90)
turtle.showturtle()

for x in range(-20, 20):

    y = -x ** 2

    turtle.setheading(turtle.towards(x, y))
    turtle.goto(x, y)

screen = Screen()
screen.exitonclick()

enter image description here

0 голосов
/ 04 марта 2019

Ориентация черепахи может быть определена из производной вашей функции в текущей позиции.

Если у вас есть функция в качестве функции sympy, вы можете попросить Python провести дифференцирование.Или вы можете просто сделать это самостоятельно.Если ваша функция

y = x^2

, то производная равна

dy = 2 * x

. Учитывая, что производная в текущей позиции, ее арктангенс дает вам направление черепахи:

t.setheading(math.atan(dy))

Убедитесь, что угол поворота черепахи установлен в радианах или переведите их в градусы

t.setheading(math.degrees(math.atan(dy)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...