Projekt został stworzony z myślą o nauce i rozwoju umiejętności programistycznych. Głównym celem było stworzenie symulacji lotu rakiety, umożliwiającej przewidywanie trajektorii na dużych dystansach. Program pozwala na dodawanie nowych planet, zmianę parametrów rakiety i testowanie różnych scenariuszy lotu.
Projekt powstał w ramach studiów na kierunku Fizyka Techniczna, a także z chęci zdobycia nowych doświadczeń w programowaniu.
Widok z symulacji:
- Symulacja lotu rakiety z uwzględnieniem grawitacji planet.
- Możliwość dodawania własnych planet oraz zmiany parametrów rakiety.
- Przewidywanie trajektorii lotu na bardzo dużych dystansach.
- Interaktywna symulacja, gdzie można zmieniać zoom i poruszać się po przestrzeni.
Note
Aktualnie planety można tylko dodawać bezpośrednio w kodzie, w pliku core/game.py
Aby uruchomić projekt, musisz mieć zainstalowane następujące biblioteki:
numpy==2.2.1
pygame==2.6.1
pymunk==6.9.0
scipy==1.15.1
Sklonuj repozytorium:
git clone https://github.com/Szynszek/rocket-simulation.git
Przejdź do katalogu projektu:
cd rocket-simulation/rocket-simulation
Zainstaluj wymagane pakiety, używając polecenia:
pip install -r requirements.txt
Uruchom program:
python main.py
Zostanie otwarte okno symulacji, w którym można:
- Poruszać się za pomocą strzałek.
- Zmieniać powiększenie za pomocą kółka myszy.
Co zobaczysz na początku:
- Trzy planety: Ziemia oraz dwie fikcyjne planety w pobliżu pozycji startowej rakiety, które pozwalają na testowanie przewidywania trajektorii.
- Strzałki – poruszanie rakietą (Strzałka w góre – zmiana ciągu).
- Kółko myszy lub Klawisze
-
,=
– Zmiana poziomu zoomu. - Klawisz
r
– Restartowanie symulacji. - Klawisze
,
,.
– Zmiana prędkości symulacji.
Trajektoria lotu rakiety obliczana jest przy użyciu prawa powszechnego ciążenia Newtona:
Gdzie:
- ( F ) – siła grawitacji,
- ( G ) – stała grawitacyjna,
- ( m₁, m₂ ) – masy ciał (rakieta i planeta),
- ( r ) – odległość między ciałami.
Do obliczeń numerycznych trajektorii rakiety wykorzystano zaawansowany algorytm RK45 (Runge-Kutta 4/5) - popularny algorytm adaptacyjny do rozwiązywania równań różniczkowych, co zapewnia:
- Wysoką dokładność przewidywania trajektorii.
- Efektywne wykorzystanie zasobów obliczeniowych.
- Pygame – do renderowania wizualizacji symulacji.
- Pymunk – do obsługi fizyki kolizji i symulacji.
- SciPy – do zaawansowanych obliczeń numerycznych.
- Możliwość dodania obiektów bezpośrednio w symulacji, a nie w kodzie.
- Dodanie dodatkowych sił np. oporu powietrza.
- Dodanie większej liczby planet (Cały układ słoneczny).
- Rozbudowa interfejsu użytkownika (UI).
- Ulepszona zmiana parametrów rakiety.
- Wprowadzenie nowych funkcji, takich jak możliwość dodawania satelitów czy lepsze przewidywanie trajektorii.
- Dodanie wieloprocesorowości dla zwiększenia wydajności.
Projekt stworzony przez Szymona Błasiaka, studenta Inżynierii Lotniczej i Kosmicznej oraz Fizyki Technicznej. GitHub: Szynszek