import matplotlib.pyplot as plt import numpy as np def czytaj_dana_float(tekst: str, minimum: float = 1.0, maximum: float = 20.0 )-> float: """ Docstring for czytaj_dana_float - czyli krótka dokumentacja funkcji :param tekst: Description - tu ma być tekst dla usera :type tekst: str :param minimum: Description - minimalna wartość :type minimum: float :param maximum: Description :type maximum: float :return: wczytana z klaimport matplotlib.pyplot as plt import numpy as npwiatyru wartość typu float :rtype: float """ tmp_value = None ret_value = None value_ok = False print(f"{minimum=}") while not value_ok: tmp_value = input(f"{tekst} - pamiętaj o {minimum=} i {maximum=}: ") try: ret_value = float(tmp_value) value_ok = True print("Super!") if ret_value < minimum: ret_value = minimum if ret_value > maximum: ret_value = maximum except: print(f"Wrowadziłeś błędnie: {tmp_value} - spróbuj ponownie...") return ret_value H_START = czytaj_dana_float("Podaj wysokość startową",3.0) V_START = czytaj_dana_float("Podaj prędkość startową") # Obliczamy najważniejsze wartości g = 9.81 # m/s^2 total_time = ((2 * H_START) / g) ** (1 / 2) max_range = V_START * total_time # Obliczamy kolejne wartości Y dla X co 1/100 ogólnego zasięgu x_points = np.arange(0, max_range, max_range / 100) y_points = H_START - ((g / 2) * (x_points / V_START) ** 2) print(x_points) print(y_points) title = f"""Wykres rzutu poziomego z H_START = {H_START} V_START = {V_START} m/s (g = {g} m/s^2) Czas lotu = {round(total_time,4)} s.""" plt.scatter(0, H_START, label=f"H_START={H_START} m") plt.scatter(max_range, 0, label=f"max_range={round(max_range,3)} m") plt.plot(x_points, y_points, marker="+", color="red", label="Kolejne punkty rzutu.") plt.grid() plt.title(title) plt.xlabel("Odległość w metrach") plt.ylabel("Wysokość w metrach") plt.legend() plt.show()