возникла проблема по построению графика баллистического движения на Python
Пытаюсь сделать демонстрацию графика через matplotlib, но не получается задать правильно координату Y. Понимаю, что нужно найти максимальную высоту по формуле, проделать координаты через arange до неё, а потом добавить в список координаты от этой максимальной высоты, до 0. Ну и в итоге сделать вывод графика. вот код:
import numpy as np
import matplotlib.pyplot as plt
# Compute the x and y coordinates for points on a sine curve
X0 = int(input("Введите X начальное")) #0
Y0 = int(input("Введите Y начальное")) #0
G = int(input("Введите g")) # 10
a = float(input("Введите угол запуска снаряда")) # 45
t = int(input("Введите t ")) # 5
V0 = int(input("Введите V начальное ")) # 15
formul_1 = V0 * np.cos(a)*t
formul_2 = V0*np.sin(a)*t-G*(t**2)/2
H = ((V0**2)*(np.sin(a)**2))/(2*G)
x = np.arange(0, formul_1, 1)
y = x
print(x, "\n", y)
print("Plot the points using matplotlib:")
plt.plot(x, y)
plt.show()
Надеюсь, кто-нибудь сможет помочь с координатой Y.
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Ваша ошибка в том, что вы работаете не с серией, а со скаляром, то есть, получаете координату одной точки в заданный момент времени. В общем случае задачу можно решить так:
import numpy as np
import matplotlib.pyplot as plt
X0 = 0
Y0 = 0
G = 9.8
a = 45
t = 5
V0 = 50
timeline = np.linspace(0, t, 100) # - вот серия - время полёта, разбитое на отрезки
# - далее идут векторизованные вычисления координат для серии.
X = V0*np.cos(np.radians(a))*timeline
Y = V0*np.sin(np.radians(a))*timeline-0.5*G*timeline**2
plt.plot(X, Y)
plt.show()
получите такую траекторию:
ну а другие вычисления доделаете сами.
