Javascript x/y距离越近,x/y速度越大

Javascript x/y距离越近,x/y速度越大,javascript,velocity,distance,Javascript,Velocity,Distance,我正在使用画布用JavaScript编写一个相当简单的脚本。它绘制一个中心节点,该节点将所有周围节点拉向它。这非常有效,但是我需要每个节点相互排斥 我将通过增加每个节点彼此之间的速度来做到这一点,这样最终它们应该保持水平,最终看起来像一朵花。它需要足够的力来阻止它们相互撞击或沉入中心节点,而不会飞到远处 我只是想不出,他们越靠近,我怎么能得到一个更高的数字 因此,如果两个节点彼此相距10px,那么它们的一个x速度将增加5个力。但如果它们彼此相距1000px,那么其中一个节点的力几乎不会增加任何东

我正在使用画布用JavaScript编写一个相当简单的脚本。它绘制一个中心节点,该节点将所有周围节点拉向它。这非常有效,但是我需要每个节点相互排斥

我将通过增加每个节点彼此之间的速度来做到这一点,这样最终它们应该保持水平,最终看起来像一朵花。它需要足够的力来阻止它们相互撞击或沉入中心节点,而不会飞到远处

我只是想不出,他们越靠近,我怎么能得到一个更高的数字

因此,如果两个节点彼此相距10px,那么它们的一个x速度将增加5个力。但如果它们彼此相距1000px,那么其中一个节点的力几乎不会增加任何东西

有没有人知道我可以用什么数学方程式来解决这类问题,或者是朝着正确的方向轻推

TL;DR:根据两个x值的接近程度,我需要增加一个节点的x速度,使它们分开,但最终保持水平。这只是我无法破解的数学问题,我已经完成了几乎所有的JavaScript,包括velocity的实现

谢谢,很抱歉有点冗长。

您只需要一个逆(或平方反比)关系:

var increment = k / distance;
或:

您可以根据所需的实际值确定
k
,例如,在第一种情况下,如果您想要距离为10的增量为5,您可以设置
k=increment*distance=50

您只需要一个逆(或平方反比)关系:

var increment = k / distance;
或:


您可以根据所需的实际值确定
k
,例如,在第一种情况下,如果您希望距离为10的增量为5,您可以设置
k=increment*distance=50

查看控制电点电荷的方程式,让速度基于每个“电荷”的“力”将根据其接近度来感觉。

研究控制电点电荷的方程式,让速度基于每个“电荷”根据其接近度所感觉到的“力”。

因此,我假设如果
k
非常高,那么它们将能够以较小的力接近。大约190马克?他们似乎都有太多的力量,目前和飞行各地的地方。如果您查看并搜索此评论<代码>//计算速度。任何指示。我知道我完全错了,我只是不知道在哪里。哦,对不起,
k=increment*distance
>\u>我正在尝试测试它,但是JSFIDLE运行得非常慢。@Wolfy87:你的模拟很好。:)是的,它看起来很酷,大部分是偶然的^^我只是想让他们安顿下来,但我做得不太对:|@casablanca我可以看出我现在的方向是正确的,但我仍然做不好。例如,当计算k时,我将使用什么作为增量?它们仍然在四处飞行:我想如果
k
非常高,那么它们就可以用更少的力靠近。大约190马克?他们似乎都有太多的力量,目前和飞行各地的地方。如果您查看并搜索此评论<代码>//计算速度。任何指示。我知道我完全错了,我只是不知道在哪里。哦,对不起,
k=increment*distance
>\u>我正在尝试测试它,但是JSFIDLE运行得非常慢。@Wolfy87:你的模拟很好。:)是的,它看起来很酷,大部分是偶然的^^我只是想让他们安顿下来,但我做得不太对:|@casablanca我可以看出我现在的方向是正确的,但我仍然做不好。例如,当计算k时,我将使用什么作为增量?他们还在四处飞行