Skip to content
/ SpaceSim Public

Симулятор движения космических тел

Notifications You must be signed in to change notification settings

Xekep/SpaceSim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 

Repository files navigation

SpaceSim

2D Симулятор движения космических тел, основанный на законе всемирного тяготения Ньютона.

Физический движок

Ускорение

По закону всемирного тяготения Ньютона, для каждого тела в системе вычисляются силы гравитационного взаимодействия, возникающие из-за всех других тел в системе.

$$F_{грав}=G\frac{{m_1 m_2}}{{r^2}}$$

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

Чтобы выразить силу, как векторную величину с двумя компонентами $F_x$ и $F_y$, необходимо разложить её на составляющие (спроецировать) по координатным осям. Для этого введем вектор расстояния между телами, который будет равен разнице двух векторов задающих положения тел на плоскости $\vec{a} = \vec{a_1}-\vec{a_2}$.

$$F_x=F_{грав} * \cos(\alpha)=F_{грав}*\frac{|\vec{a_x}|}{|\vec{a}|}$$

$$F_y=F_{грав} * \sin(\alpha)=F_{грав}*\frac{|\vec{a_y}|}{|\vec{a}|}$$

$F_x$ и $F_y$ представляют собой проекции вектора силы $\vec{F}$ на соответствующие оси и выражаются, как модуль силы умноженный на отношение длины проекции вектора расстояния $|\vec{a_{x}}|$ или $|\vec{a_{y}}|$ к расстоянию между телами $|\vec{a}|$.

Затем векторы сил складываются, для получения общей силы, действующей на тело.

$$\vec{F}_{\text{грав}}=\sum_{i=1}^{N}\vec{F}_{\text{грав}}^{i}$$

Ускорение объекта рассчитывается по второму закону Ньютона (закон механического движения).

$$\vec{a}=\frac{\vec{F_{общ}}}{m}$$

Ускорение прямо пропорционально вызывающей его силе, совпадает с ней по направлению и обратно пропорционально массе материальной точки

Скорость

Гравитационная задача N тел при N>3 требует численных методов решения.

Полная механическая энергия системы

Чтобы рассчитать полную механическую энергию системы $E$, необходимо просуммировать кинетическую энергию каждого тела и потенциальную гравитационную энергию каждой пары тел в системе.

$$E=\sum_{i=1}^{N}\frac{m_iv_i^2}{2}+\sum_{\substack{j \neq i}}^{N}(-G\frac{m_im_j}{r_{ij}})$$

С точки зрения механики, моделируемая система консервативна, и по закону сохранения энергии в ней должна оставаться постоянной полная механическая энергия $E$.

Радиус тела

$$V=\frac{4}{3}{\pi}r^3$$

Так как каждое тело в моделируемой системе представлено в виде проекции шара на плоскость и обладает двумя характеристиками - массой и плотностью, формула объема шара может быть преобразована для вычисления радиуса тела: необходимо заменить объем $V$ на соотношение массы $m$ к плотности $d$ и выразить радиус $R$.

$$r=\sqrt[3]\frac{3m}{4d\pi}$$

Ссылки

  1. Закон всемирного тяготения Ньютона
  2. Законы Ньютона
  3. Гравитационная задача N тел
  4. Метод Стёрмера — Верле
  5. Закон сохранения энергии
  6. Интегрирование уравнений движения

Планы

  • Симуляция движения тел
  • Обработка столкновений тел
  • Шейдеры
  • Звуковое сопровождение
  • Подсчет полной механической энергии системы

About

Симулятор движения космических тел

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published