возникла проблема по построению графика баллистического движения на Python

Рейтинг: 0Ответов: 1Опубликовано: 28.03.2023

Пытаюсь сделать демонстрацию графика через 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Принят

Ваша ошибка в том, что вы работаете не с серией, а со скаляром, то есть, получаете координату одной точки в заданный момент времени. В общем случае задачу можно решить так:

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()

получите такую траекторию:

введите сюда описание изображения

ну а другие вычисления доделаете сами.