Просмотр демонстрации · Ошибка отчета · Функция запроса

Это программа Python для имитации взаимодействия планет
Это означает, что вы можете войти в массы планет и начальные позиции и скорости, и наша программа покажет вам, как они будут взаимодействовать с какими -то больными в хорошем моделировании
Наша программа покажет вам ожидаемый сценарий, но он не может быть на 100% точным.
Есть много готовых демонстраций, которые могут вас произвести впечатление!
Несколько вещей, которые вы можете сделать с нашим приложением:
Убедитесь, что вы установили все следующие предпосылки на машине разработки:
pip --version
Сначала откройте CMD в месте, где вы хотите загрузить проект, а затем напишите эти команды:
Клонировать репозиторий к местной машине:
git clone https://github.com/suliman-99/Space-Simulation.git
Перейдите к каталогу проекта:
cd Space-Simulation
Затем для установки модуля Pipenv от PIP просто напишите эту команду на свой CMD
pip install pipenv
Установите необходимые зависимости, используя Pipenv:
pipenv install
Запустите проект:
Windows:
python main.py
Linux или Mac:
python3 main.py
Первый шаг - запустить программу, следуя предыдущей установке раздела.
Приложение откроется с помощью кнопок буксировки: нажмите Create new Simulation , чтобы сделать новое или выберите Simulation From File , чтобы открыть готовую демонстрацию или открыть сохраненные демонстрации или штаты
Затем нажмите Run Simulation , чтобы запустить симуляцию
Ваш браузер по умолчанию откроется на странице моделирования
Вы можете сохранить текущее состояние, нажав на кнопку Save State , и оно будет сохранено в файле demos/saved_state.txt , и вы можете использовать его снова оттуда
Если вы хотите попробовать новую демонстрацию, мне жаль сказать, что вам нужно закрыть программу и открыть ее снова
Закон универсальной гравитации Ньютона
F = (G * m1 * m2) / r^2
G : гравитационная постоянная
m1 , m2 : массы этих двух объектов
r : Расстояние между центрами масс
F : гравитационная сила, действующая между ними
Мы используем эту формулу для расчета силы в каждой паре планет
Мы обновляем общую силу для Planets этим методом:
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))
Второй закон движения Ньютона
F = m * a => a = F / m
m : Масса объекта
F : Общая сила применяется к нему
a : Ускорение этого
Мы используем эту Fomula для расчета ускорения каждой планеты в зависимости от общей силы, применяемой на ней
После этого мы можем рассчитать новую скорость (вектор скорости) в зависимости от скорости тока и ускорения
После этого мы можем рассчитать новую позицию (x, y, z) в зависимости от положения тока и скорости
Тогда мы можем повторно заполнить объект в новом месте
Мы можем сделать это много времени в одной и той же секунде (более 10 раз), и у нас будет хорошая визуализация
Мы обновляем данные Palnet этим методом:
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
Еще одно столкновение темы
Project Name
│ main.py
└───core
│ │ camera.py
│ │ environment.py
│ │ file.py
│ │ physics.py
│ │ planet.py
│ │ vector.py
│
└───gui
│ screens
│ app.py
│ controls.py
assets вот наши изображенияdemos вот наши демонстрации и штаты сохраняются как файлыresources здесь некоторые устойчивые глобальные переменныеtesting Это наша папка тестирования Если у вас есть предложения о том, как можно улучшить космическую симуляцию, или вы хотите сообщить об ошибке, откройте проблему! Мы хотели бы все и любой вклад.
Для получения дополнительной информации, проверьте руководство.
Suliman Awad - [email protected] - LinkedIn
Ссылка на проект: https://github.com/suliman-99/space-simulation
MIT Лицензия
Авторские права (с) 2023 Сулиман Авад
Для получения дополнительной информации, ознакомьтесь с файлом лицензии.