Чем ближе x / y, тем больше скорость x / y - PullRequest
1 голос
/ 24 мая 2011

Я пишу довольно простой скрипт на JavaScript с использованием canvas.Он рисует центральный узел, который тянет к себе все окружающие узлы.Это прекрасно работает, однако мне нужно, чтобы каждый узел отталкивал друг друга.

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

Я просто не могу понять, как я могу получить большее число, когда они ближе.

Таким образом, если два узла расположены на расстоянии 10 пикселей друг от друга, это добавит 5 к одной из их скоростей x.Но если они находятся на расстоянии 1000 пикселей друг от друга, это почти ничего не добавит к силе одного из узлов.

Кто-нибудь знает математическое уравнение, которое я могу использовать, чтобы решить подобные вещи, или, может быть,толчок в правильном направлении?

TL; DR: В зависимости от того, насколько близки два значения x, мне нужно увеличить скорость x одного узла, чтобы они разошлись, но в конечном итоге выровнялись,Это просто математика, которую я не могу взломать, у меня есть почти весь JavaScript, включая реализацию скорости.

Спасибо, и извините, это немного многословно.

Ответы [ 2 ]

4 голосов
/ 24 мая 2011

Вам просто нужны обратные (или обратные квадратные) отношения:

var increment = k / distance;

или

var increment = k / (distance * distance);

Вы можете определить k на основе фактических значений, которые вы хотите, например, в первом случае, если вы хотите увеличить значение на 5 для расстояния 10, вы должны установить k = increment * distance = 50.

2 голосов
/ 24 мая 2011

Посмотрите на уравнения, управляющие точечными электрическими зарядами, скорость должна быть основана на "силе", которую каждый "заряд" будет чувствовать, основываясь на его близости.

...