Orbit Sandbox — игрушечная гравитация в браузере
Бросайте тела, придавайте им скорость и смотрите, как n-body гравитация стягивает их в орбиты, пращи и столкновения. Маленький поклон Universe Sandbox.
Universe Sandbox — моя «уютная» программа. Хотелось прощупать, сколько того самого удовольствия «потыкать вселенную» переживёт в 200-строчной canvas-игрушке с наивной гравитацией.
Наивная O(n²) гравитация спокойно тянет пару сотен тел на 60fps. Сложное тут не физика, а стабильный интегратор: обычный Эйлер взрывается, полу-неявный остаётся спокойным.
На обычном Эйлере два близких тела набирают бесконечную энергию и улетают за экран. Смягчение расстояния (эпсилон, чтобы r никогда не обнулялся) плюс полу-неявная интеграция погасили этот «фейерверк».
Потыкай вселенную
Клик по пустому месту — бросить тело. Клик с протяжкой — запустить его со скоростью. Всё притягивает всё, поэтому маленькие скопления падают в орбиты, а промахи мимо превращаются в пращи.
Этот эксперимент намеренно помечен wip: интегратор стабилен, но слияния тел при столкновении пока нет, а дальше хочу добавить массу-по-радиусу-протяжки. В этом и смысл лабораторной записи — показывать швы, а не прятать их.