Модель солнечной системы
В скобках указаны соответствующие терминам обозначения, используемые в программе
Астрономический объект (далее - объект) (object
) - отдельное небесное тело (например, звезда, планета или луна).
Звезда (star
) - объект, являющийся центром системы.
Планета - объект, вращающийся вокруг звезды.
Луна - объект, вращающийся вокруг планеты; естественный спутник планеты (например, для Земли - это Луна, а для Марса - Фобос и Деймос).
Система (system
) - совокупность объектов (звезда и её планеты и их луны).
Солнечная система (solar_system
) - частный случай системы, состоящий из звезды (Солнце), планет (Меркурий, Венера, Земля, Марс, Юпитер, Сатурн, Уран, Нептун) и лун (Луна).
Астрономическая единица (au
) - единица измерения расстояний, равная расстоянию от Солнца до Земли (или ~149 597 870 км).
Плоскость эклиптики - плоскость обращения Земли вокруг Солнца (плоскость земной орбиты).
Осеннее равноденствие (equinox
) - астрономическое событие, роль в модели - ориентир координатной системы. При наблюдении с Земли центр Солнца в своём видимом движении по эклиптике пересекает небесный экватор (круг, лежащий в плоскости земного экватора) и переходит из северного полушария небесной сферы в южное. Осеннее равноденствие происходит 22 или 23 сентября каждого года. Для других планет (кроме Земли) осеннее равноденствие происходит в точке пересечения планетой оси, направленной от Солнца к земному осеннему равноденствию.
Зимнее солнцестояние - астрономическое событие, при котором Солнце над горизонтом в полдень находится на минимальной высоте.
Solar System - это реализация на C++ модели солнечной системы. Модель по запросу даты выдаёт координаты объектов солнечной системы в астрономических единицах и отображает их. Система координат модели лежит в плоскости эклиптики, центром системы координат является звезда (Солнце). Ось абсцисс (x) направлена от звезды в точку осеннего равноденствия Земли, ось ординат (y) - в точку зимнего солнцестояния Земли. Таким образом, взгляд наблюдателя направлен на север звезды, планеты вращаются против часовой стрелки.
├── src/ # Исходный код
├── qml/ # QML интерфейс
├── assets/ # Изображения, иконки и пр.
├── CMakeLists.txt # Основной CMake-файл
└── main.cpp # Точка входа
Здесь и далее: Все значения в угловых скобках <...> нужно заменить на свои.
Установите Qt через Qt Installer или через vcpkg
.
Для использования QML модулей убедитесь, что установлены компоненты:
qtbase
qtdeclarative
qtquickcontrols2
Если вы используете vcpkg
, выполните:
vcpkg install qtbase qtdeclarative qtquickcontrols2
И добавьте путь к QML-модулям в main.cpp, чтобы приложение находило их:
engine.addImportPath("C:/Users/<user_name>/vcpkg/installed/x64-windows/Qt6/qml");
Важно: замените <user_name> на ваше имя пользователя в системе или замените путь полностью, если vcpkg и qt был установлен по другому пути.
git clone https://github.com/fediukov/solar_system.git
cd solar_system
mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=<path_to_vcpkg>/scripts/buildsystems/vcpkg.cmake
где: <path_to_vcpkg> - путь до vcpkg
cmake --build .
После сборки необходимо собрать все зависимости Qt рядом с .exe
с помощью утилиты windeployqt
, которая поставляется с Qt и подтягивает необходимые зависимости к exe-файлу. Без этого приложение, скорее всего, не запустится из-за отсутствия зависимостей Qt
Найдите путь до windeployqt.exe
, например:
C:\Qt\6.5.2\msvc2019_64\bin\windeployqt.exe
Запустите windeployqt:
windeployqt --qmldir ../../qml <path_to_exe>
где: ../../qml - относительный путь до папки qml в Qt, <path_to_exe> - путь до exe-файла (например, D:\SolarSystemQt\out\build\x64-Release\SolarSystemQt)
Пример: windeployqt --qmldir 'C:\vcpkg\installed\x64-windows\Qt6\qml' 'D:\SolarSystemQt\out\build\x64-Release\SolarSystemQt'
Проверьте, что рядом с .exe появились каталоги qml, platforms, .dll-библиотеки и другое.
Запустить можно .exe прямо из проводника. Если возникают ошибки с модулями QML — проверьте, добавлен ли правильный путь в addImportPath и установлены ли нужные Qt-компоненты.
- C++17 совместимый компилятор (например, MSVC, GCC, Clang)
- Qt 6 (рекомендуется Qt 6.5 и выше)
- CMake (версия 3.16 и выше)
- Git