Как стать автором
Обновить

Простая гравитационная модель в браузере

Время на прочтение2 мин
Количество просмотров5.4K

Нелогичное продолжение моей старой статьи Рисуем интерференционную картину на JavaScript.

Забавы ради появилась идея сделать анимацию движения планет. Чтобы далеко не отходить от станка решено все было сделать в браузере на JavaScript.

Первая версия была про солнечную систему: планеты, Солнце, масштаб. Скучно!

Затем вспомнился научно-познавательный фильм про раннюю однородную Вселенную, в которой происходили флуктуации, вызывающие образование сгустков материи. В фильме приводилась анимация с шариками, которые висели в сетке. Решено было повторить, но "чуть" проще - с 16 шариками.

А теперь сделаем небольшую магию: рассчитаем силу тяготения между всеми шариками, вычислим результирующий вектор, силу и ускорение. В нашем примере все предсказуемо и без вычислений: шары полетят к центру.

А так как в моей модели у нас шарики не сталкиваются друг с другом, то они, набрав скорость, пролетают центр масс.

Дальше они несколько раз пролетают через центр масс и начинают набирать ошибку вычисления и улетают в "космос".

Самое забавное - наблюдать за тем, как шарики начинают вращаться вокруг общего центра масс. Еще очень крутой эффект - это гравитационная праща, думаю, вам повезет его увидеть, когда шарик пролетает между группой других шариков и разгоняется, уходя за горизонт/экран.

В конце концов получается хаотическая картинка, что была в начале статьи.

Обязательно сходите и сами поэкспериментируйте в песочнице https://jsfiddle.net/gf4wc0yq/3/. Код прост и не использует фреймворки (но проверялся только в Google Chrome под Ubuntu).

Что вы можете доработать в модели:

  1. Учет веса;

  2. Расчет столкновений, поглощение шариков друг другом и переход части кинетической энергии в тепловую;

  3. Заранее определенные скорости и углы (например, для генерации простой модели трех тел);

Делитесь в комментариях своими находками.

Теги:
Хабы:
Всего голосов 6: ↑5 и ↓1+5
Комментарии10

Публикации

Истории

Работа

Ближайшие события

12 – 13 июля
Геймтон DatsDefense
Онлайн
14 июля
Фестиваль Selectel Day Off
Санкт-ПетербургОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн