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

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

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

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

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

Самое забавное — наблюдать за тем, как шарики начинают вращаться вокруг общего центра масс. Еще очень крутой эффект — это гравитационная праща, думаю, вам повезет его увидеть, когда шарик пролетает между группой других шариков и разгоняется, уходя за горизонт/экран.
В конце концов получается хаотическая картинка, что была в начале статьи.
Обязательно сходите и сами поэкспериментируйте в песочнице https://jsfiddle.net/gf4wc0yq/3/. Код прост и не использует фреймворки (но проверялся только в Google Chrome под Ubuntu).
Что вы можете доработать в модели:
-
Учет веса;
-
Расчет столкновений, поглощение шариков друг другом и переход части кинетической энергии в тепловую;
-
Заранее определенные скорости и углы (например, для генерации простой модели трех тел);
Делитесь в комментариях своими находками.
ссылка на оригинал статьи https://habr.com/ru/articles/690292/
Добавить комментарий