Моделирование космического пространства

Создание модели солнечной системы

Шипулин Иван, ИУ8-33

План презентации

  • Описание целей и задач
  • Актуальность
  • Структура и область работы
  • Анализ данных
  • Разработка программного продукта

Цели и задачи

Цель

 Изучить законы движения планет солнечной системы, и их спутников, а также гравитационное взаимодействие тел в космическом пространстве, используя навыки и умения, полученные при изучении дисциплины «Технологии и методы программирования» на основе разработки прототипа программного продукта для решения прикладной или системной задачи.

Задачи

  •   Проанализировать учебно-методическую литературу по математическим основам трёхмерной графики и теоретическим аспектам строения Солнечной системы;

  • Исследование законов гравитационного взаимодействия тел;

  • Ознакомление с средой разработки Qt Creator и спецификацией OpenGL;

  • Создание работоспособной модели.

Актуальность

Двадцатый век - был веком научно-технического прогресса. Человечество с тех пор во многом продвинулось, и двадцать первый век дает неограниченные возможности в космологии, компьютеризации всего мира который нас окружает. Важную роль в жизни современного человека играет осознание и представление вопроса: каким образом движутся планеты и прочие космические тела и почему. На сколько серьезно человеку необходимы эти достижения. Благодаря космосу, мы общаемся и смотрим телевидение. Все это возможно только при развитии науки. Моделирование космических пространства помогает человеку осознать суть современной науки.

Основные причины исследования, а, следовательно, и моделирования человеком космического пространства

  • Защита от возможного столкновения с астероидом
  • Возможность появления новых великих открытий
  • Человечеству необходимо сырье из космоса
  • Для своего выживания человечеству, вероятно, придется колонизировать другие планеты

Структура и область работы

Законы Кеплера

  • Орбита каждой планеты есть эллипс, в одном из фокусов которого находится Солнце.
  • Радиус-вектор планеты за равные промежутки времени описывает равные площади
  • Квадраты звездных  периодов обращения планет относятся между собой как кубы больших полуосей их орбит.

Закон всемирного тяготения

Два любых тела притягиваются друг к другу с силой, прямо пропорциональной массе каждого из них и обратно пропорциональной квадрату расстояния между ними.

 

F = G (M _{1} M _{2})/R^2

Сигналы и слоты

Разработка программного продукта

Функционал программы

  • Планеты движущиеся по орбитам
  • Возможность приближать и отдалять камеру
  • Возможность изменять положение камеры
  • Возможность запустить планеты в обратном порядке("отмотка времени")
  • Возможность запустить астероид

Пример листинга кода

class CameraRotator : public QObject
{
    Q_OBJECT
public slots:
    void onSizeChanged(float width, float height);
signals:
    void requestToRedraw();
private:
    float m_viewDistance;
    float m_rotX;
    float m_rotY;
    const float m_xLimit = 85.f;
    bool m_moving = false;
    float m_degreesPerPixelX;
    float m_degreesPerPixelY;
    float m_prevX;
    float m_prevY;
public:
    CameraRotator(float viewDistance = 300.f, float rotX = 0.f, float rotY = 0.f);
    virtual ~CameraRotator() {};

    void doMousePress(float x, float y);
    void doMouseMove(float x, float y);
    void doMouseRelease();
    void doMouseWheel(float delta);

    QMatrix4x4 getViewMatrix();
};

Пример работы модели

Технологии

GitHub-репозиторий

GH-pages и Releases

CI (Continuous integration)

Выводы

Спасибо за внимание