Symulacja rzutu piłką
WPROWADZENIE
Rzucając piłką zastanawiamy się jak daleko poleci oraz na jaką wysokość się wzniesie. Zarówno odległość jak i wysokość zależą od wielu czynników, np:
- prędkość początkowa,
- przyspieszenie grawitacyjne,
- kąt rzutu,
- opór powietrza,
- siła i kierunek wiatru.
Jeśli pominiemy wiele czynników oraz przyjmiemy dość uproszczony model, będziemy mogli przeprowadzić eksperyment.
Jeśli weźmiemy pod uwagę jedynie:
- przyspieszenie ziemskie jako stałą grawitacyjną $g=9,8 \frac{m}{s^2}$,
- prędkość początkową (prędkość, z którą piłka jest wyrzucana) w m/s,
- kąt rzutu w stopniach
to możemy:
- ze wzoru $s=\frac{v^2 \cdot sin 2\alpha}{g}$ wyznaczyć odległość rzutu,
- ze wzoru $h=\frac{v^2 \cdot sin^2 \alpha}{2g}$ wyznaczyć maksymalną wysokość jaką osiągnie piłka.
gdzie:
- $v$ – prędkość początkowa
- $\alpha$ – kąt rzutu (w radianach)
- $g$ – stała grawitacyjna – przyspieszenie ziemskie
Możemy przeprowadzić symulację, jak będzie zmieniać się odległość i wysokość rzutu, jeśli będziemy zmieniać kąt rzutu.
Oczywistym jest, że jeśli:
- kąt początkowy jest mały, to zarówno wysokość, jak i odległość jest niewielka – rzucamy prawie płasko, więc piłka nie wzniesie się wysoko oraz nie poleci daleko,
- kąt początkowy jest duży (rzucamy prawie pionowo), to może i wysokość będzie duża, ale odległość mała.
Jak więc dobrać kąt, żeby odległość była największa?
KOD W JĘZYKU PYTHON
JAK DZIAŁA PROGRAM?
- Importuje moduł math, który jest potrzebny do wykonywania operacji matematycznych.
- Definiuje dwie funkcje:
- oblicz_odleglosc_rzutu(predkosc_poczatkowa, kat): Oblicza odległość rzutu dla podanej prędkości początkowej i kąta rzutu. Wykorzystuje wzór d = (v^2 * sin(2θ)) / g, gdzie v to prędkość początkowa, θ to kąt w radianach, a g to przyspieszenie ziemskie.
- oblicz_wysokosc_rzutu(predkosc_poczatkowa, kat): Oblicza maksymalną wysokość osiągniętą podczas rzutu dla podanej prędkości początkowej i kąta rzutu. Wykorzystuje wzór h = (v^2 * sin(θ)^2) / (2 * g), gdzie v to prędkość początkowa, θ to kąt w radianach, a g to przyspieszenie ziemskie.
- Pobiera od użytkownika prędkość początkową w metrach na sekundę.
- Inicjalizuje puste listy odleglosci i wysokosci, które będą przechowywać obliczone odległości i wysokości dla różnych kątów.
- Iteruje po kątach od 5 do 80 (włącznie) z krokiem 5:
- Oblicza odległość rzutu i maksymalną wysokość dla każdego kąta, korzystając z odpowiednich funkcji.
- Dodaje obliczone wartości do odpowiednich list.
- Wyświetla nagłówek tabeli, który zawiera nazwy kolumn: „Kąt (stopnie)”, „Odległość (m)”, „Maks. wysokość (m)”.
- Iteruje po indeksach elementów list odleglosci i wysokosci przy użyciu funkcji range i len, aby określić liczbę elementów:
- Formatuje każdą odległość i wysokość do dwóch miejsc po przecinku i zamienia kropkę na przecinek.
- Wyświetla każdy kąt, odległość i wysokość w odpowiednim formacie, używając odpowiednich odstępów i tabulacji.
- Program kończy działanie, a na ekranie zostaje wyświetlona tabela z kątami, odległościami i maksymalnymi wysokościami, na podstawie wprowadzonej przez użytkownika prędkości początkowej.