Моделирование космического пространства
Создание модели солнечной системы
Шипулин Иван, ИУ8-33
Цели и задачи
Изучить законы движения планет солнечной системы, и их спутников, а также гравитационное взаимодействие тел в космическом пространстве, используя навыки и умения, полученные при изучении дисциплины «Технологии и методы программирования» на основе разработки прототипа программного продукта для решения прикладной или системной задачи.
Проанализировать учебно-методическую литературу по математическим основам трёхмерной графики и теоретическим аспектам строения Солнечной системы;
Исследование законов гравитационного взаимодействия тел;
Ознакомление с средой разработки Qt Creator и спецификацией OpenGL;
Создание работоспособной модели.
Двадцатый век - был веком научно-технического прогресса. Человечество с тех пор во многом продвинулось, и двадцать первый век дает неограниченные возможности в космологии, компьютеризации всего мира который нас окружает. Важную роль в жизни современного человека играет осознание и представление вопроса: каким образом движутся планеты и прочие космические тела и почему. На сколько серьезно человеку необходимы эти достижения. Благодаря космосу, мы общаемся и смотрим телевидение. Все это возможно только при развитии науки. Моделирование космических пространства помогает человеку осознать суть современной науки.
Квадраты звездных периодов обращения планет относятся между собой как кубы больших полуосей их орбит.
Два любых тела притягиваются друг к другу с силой, прямо пропорциональной массе каждого из них и обратно пропорциональной квадрату расстояния между ними.
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();
};