Solar System — Ticket 3
Программа моделирует солнечную систему по билету №3.
Реализовано
- 2 звезды.
- У первой звезды 11 планет.
- У второй звезды 12 планет.
- У первой звезды по 1 планете на каждой орбите.
- У второй звезды по 2 планеты на каждой орбите.
- Чётные орбиты вращаются против часовой стрелки.
- Нечётные орбиты вращаются по часовой стрелке.
- Каждая орбита пересекается хотя бы с одной орбитой другой звезды.
- Планеты не пересекаются на экране.
- Орбиты можно включать и выключать.
- Состояние можно сохранить в
solar_state.txt.
Управление
SPACE— пауза.O— включить/выключить орбиты.S— сохранить состояние.ESC— выход.
Сборка Linux
python3 -m venv venv
source venv/bin/activate
pip install pygame pyinstaller
pyinstaller --onefile --windowed --name SolarSystem main.py
cp dist/SolarSystem .
chmod +x SolarSystem
Исправление орбит
В этой версии планеты не отталкиваются и не влияют друг на друга. Движение строго орбитальное: угол меняется на angular_speed * direction, после чего координаты пересчитываются по окружности. Расстояние между звездами подобрано так, чтобы каждая орбита имела пересечение хотя бы с одной орбитой другой звезды, но орбиты не проходят через центры звезд.
В этой версии планеты не взаимодействуют друг с другом и не меняют траектории: движение идёт строго по орбитам. Начальные углы и размер планет подобраны так, чтобы планеты визуально не пересекались при демонстрации.
Дополнение: скорость движения увеличена; ближние планеты вращаются быстрее дальних. Начальные углы разведены, планеты не стартуют из одной точки и не влияют друг на друга.
Обновление: начальные углы планет подобраны заранее, чтобы при запуске планеты не пересекались. Планеты двигаются только по своим орбитам и не влияют друг на друга.