Я пытаюсь создать простую симуляцию частиц. Есть два типа частиц: статические и движущиеся. Статические частицы притягивают движущиеся частицы к своему центру. У статических частиц есть атрибут силы, который определяет, насколько сильно они притягивают движущиеся частицы.
var angle:Number = Math.atan2(moving.y - static.y , moving.x - static.x);
var dist = Point.distance(new Point(moving.x,moving.y) , new Point(static.x,static.y));
moving.velX += Math.cos(angle + Math.PI) * static.strength / dist;
moving.velY += Math.sin(angle + Math.PI) * static.strength / dist;
Проблема заключается в том, что когда частица просто проходит через центр, расстояние очень мало, что приводит к очень большим значениям скорости.
Я добавил дополнительную проверку расстояния перед вычислением скорости.
if (dist < 1)
dist = 1;
Но проблема все еще сохраняется. Я не могу понять проблему.
Вот снимок происходящего перерегулирования.