我正在使用画布在JavaScript中编写一个相当简单的脚本。它绘制了一个中心节点,将所有周围节点拉向它。这很好用,但我需要每个节点相互排斥。
我将通过增加每个节点之间的速度来实现这一目标,因此最终它们应该升级并最终看起来像一朵花。它需要有足够的力来阻止它们相互撞击或沉入中心节点而不会飞向远处。
我无法弄清楚如何能够获得更高的数字。
因此,如果两个距离彼此相距10px的节点,它们将为其中一个x速度增加5个。但如果它们彼此相距1000px那么它几乎不会增加其中一个节点的力量。
有没有人知道我可以用来处理这类事情的数学方程式,或者可能是朝着正确的方向推进?
TL; DR:根据两个x值的接近程度,我需要增加一个节点的x速度,使它们分开,但最终会变平。这只是我无法破解的数学,我几乎完成了所有的JavaScript,包括速度的实现。
谢谢,对不起,这有点罗嗦。
答案 0 :(得分:4)
你只需要一个反向(或反平方)关系:
var increment = k / distance;
或:
var increment = k / (distance * distance);
您可以根据所需的实际值确定k
,例如,在第一种情况下,如果您希望在距离10的情况下增加5,则可以设置k = increment * distance = 50
。< / p>
答案 1 :(得分:2)
研究控制电点电荷的方程,速度应基于每个“电荷”基于其接近度感觉到的“力”。