Lihat Demo · Laporkan Bug · Fitur Permintaan

Ini adalah program Python untuk mensimulasikan interaksi planet
Ini berarti bahwa Anda dapat memasuki massa planet dan posisi awal dan kecepatan dan program kami akan menunjukkan kepada Anda bagaimana mereka berinteraksi dengan masing -masing orang dalam simulasi yang bagus
Program kami akan menunjukkan kepada Anda skenario yang diharapkan tetapi mungkin tidak 100% akurat.
Ada banyak demo siap pakai mungkin membuat Anda terkesan!
Beberapa hal yang dapat Anda lakukan dengan aplikasi kami:
Pastikan Anda telah memasang semua prasyarat berikut di mesin pengembangan Anda:
pip --version
Pertama -tama buka CMD di tempat Anda ingin mengunduh proyek di kemudian tulis perintah ini:
Klon Repositori ke Mesin Lokal Anda:
git clone https://github.com/suliman-99/Space-Simulation.git
Arahkan ke Direktori Proyek:
cd Space-Simulation
Kemudian untuk menginstal Modul Pipenv oleh PIP cukup tulis perintah ini di CMD Anda
pip install pipenv
Pasang dependensi yang diperlukan menggunakan PIPENV:
pipenv install
Jalankan proyek:
Windows:
python main.py
Linux atau Mac:
python3 main.py
Langkah pertama adalah menjalankan program dengan mengikuti instalasi bagian sebelumnya.
Aplikasi akan dibuka dengan tombol derek: Klik Create new Simulation untuk membuat yang baru atau pilih Simulation From File untuk membuka demo siap pakai atau untuk membuka demo atau status yang disimpan
Kemudian klik Run Simulation untuk memulai simulasi
Browser default Anda akan terbuka dengan halaman simulasi
Anda dapat menyimpan status saat ini dengan mengklik tombol Save State dan itu akan disimpan dalam file demos/saved_state.txt , dan Anda dapat menggunakannya lagi dari sana
Jika Anda ingin mencoba demo baru, maaf untuk mengatakan bahwa Anda perlu menutup program dan membukanya lagi
Hukum Gravitasi Universal Newton
F = (G * m1 * m2) / r^2
G : Konstanta gravitasi
m1 , m2 : Massa dari dua objek ini
r : Jarak antara pusat -pusat massa
F : Gaya gravitasi yang bekerja di antara mereka
Kami menggunakan rumus ini untuk menghitung gaya Berween setiap pasangan planet
Kami memperbarui kekuatan total untuk planeet dengan metode ini:
def apply_gravity(planet1: Planet, planet2: Planet) -> None:
u = planet2.pos - planet1.pos
grav = g * planet1.mass * planet2.mass / (u.length() ** 2)
planet1.add_force(u.scale_to(grav))
planet2.add_force(u.scale_to(-grav))
Hukum Gerak Kedua Newton
F = m * a => a = F / m
m : Massa objek
F : Kekuatan total diterapkan di atasnya
a : percepatannya
Kami menggunakan fomula ini untuk menghitung percepatan masing -masing planet tergantung pada total gaya yang diterapkan di atasnya
Setelah itu kita dapat menghitung kecepatan baru (vektor kecepatan) tergantung pada kecepatan arus dan akselerasi
Setelah itu kita dapat menghitung posisi baru (x, y, z) tergantung pada posisi saat ini dan kecepatannya
Kemudian kita dapat menanamkan kembali objek di tempat baru
kita dapat melakukan itu banyak waktu di detik yang sama (lebih dari 10 waktu) dan kita akan memiliki visualisasi yang baik
Kami memperbarui data palnet dengan metode ini:
def update(self, dt: float) -> None:
self.pos += (self.velocity * dt) + (self.acceleration * ((dt ** 2) / 2))
self.velocity += self.acceleration * dt
self.acceleration = self.force / self.mass
Tabrakan topik lainnya
Project Name
│ main.py
└───core
│ │ camera.py
│ │ environment.py
│ │ file.py
│ │ physics.py
│ │ planet.py
│ │ vector.py
│
└───gui
│ screens
│ app.py
│ controls.py
assets Berikut adalah gambar kamidemos Berikut adalah demo dan negara bagian kami disimpan sebagai fileresources di sini beberapa variabel global yang rintiktesting Ini adalah folder pengujian kami Jika Anda memiliki saran tentang bagaimana simulasi ruang dapat ditingkatkan, atau ingin melaporkan bug, buka masalah! Kami akan menyukai semua dan kontribusi apa pun.
Untuk lebih lanjut, lihat panduan yang berkontribusi.
Suliman Awad - [email protected] - LinkedIn
Tautan Proyek: https://github.com/suliman-99/space-simulation
Lisensi MIT
Hak Cipta (C) 2023 Suliman Awad
Untuk lebih lanjut, lihat file lisensi.