@Uncle_Savva

Как можно запрограммировать гравитацию?

Я хочу сделать программу типа звездного неба, т.е. будут некие тела (звезды) которые будут притягиваться друг к другу, их траектория движения будет искажаться, и в конце концов они будут сливаться в одну звезду. Подскажите пожалуйста, в каком направлении копать? Я уже видел попытки реализовать это, например https://habr.com/ru/post/265211/, но там звезды просто пролетают друг через друга и не сливаются в единое целое.
  • Вопрос задан
  • 744 просмотра
Пригласить эксперта
Ответы на вопрос 4
Zoominger
@Zoominger
System Integrator
Ого, да у нас тут заявка на Нобелевку.
Как решите задачу трёх тел, сразу можете ехать в Уганду (или где там её выдают).
Я серьёзно, это будет для вас непреодолимой проблемой, если, конечно, у вас не просто две звезды.
Ответ написан
@Daddy_Cool
Не очень понятен уровень детализации.
1. Задача гравитационного взаимодействия программируется сравнительно просто
ru.wikipedia.org/wiki/Задача_трёх_тел
у вас будет не три тела, а много (N тел). Т.е. вам нужно будет решать систему из 3N обыкновенных дифуравнений.
Решение будет неправильным (по причине неустойчивости), но в общем похожим на правду.
2. Также вам надо учесть, что у вас не материальные точки, а шары - т.е. при движении звезд учитывать расстояние не только между центрами, но и между поверхностями - когда поверхности соприкоснулись - начинается сливание.
3. Как описать сливание звезд. Тут уже сложно. Звезда - это жидкость. Если хотите видеть как меняется форма поверхности - нужно решать уравнение Навье-Стокса (ну или возможно просто Эйлера) с введенными электромагнитными и гравитационными силами и отслеживать форму поверхности каким-либо методом - например VOF (Volume of fluid). ну это так как на самом деле. Если просто поиграться - то зная суммарный объем можно просто слить звезды как капельки не думая о физике.
Успехов!
Ответ написан
Комментировать
Может, готовое поискать? Например harttle/universe (демо)
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Смотреть нужно в направлении векторного поля к поверхности.
Проще всего - магнитным полем делать.
А при касании тел - "включать" перетекание масс друг в друга в точке касания по принципу затухающего маятника.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы