Skip to content

fediukov/solar_system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Solar System

Модель солнечной системы

Описание

Астрономические термины

В скобках указаны соответствующие терминам обозначения, используемые в программе

Астрономический объект (далее - объект) (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 через 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:

cmake .. -DCMAKE_TOOLCHAIN_FILE=<path_to_vcpkg>/scripts/buildsystems/vcpkg.cmake

где: <path_to_vcpkg> - путь до vcpkg

Соберите проект:

cmake --build .

Подготовка к запуску (Windows) через windeployqt:

После сборки необходимо собрать все зависимости 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

About

Модель солнечной системы

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published