Javascript x/y距离越近,x/y速度越大
我正在使用画布用JavaScript编写一个相当简单的脚本。它绘制一个中心节点,该节点将所有周围节点拉向它。这非常有效,但是我需要每个节点相互排斥 我将通过增加每个节点彼此之间的速度来做到这一点,这样最终它们应该保持水平,最终看起来像一朵花。它需要足够的力来阻止它们相互撞击或沉入中心节点,而不会飞到远处 我只是想不出,他们越靠近,我怎么能得到一个更高的数字 因此,如果两个节点彼此相距10px,那么它们的一个x速度将增加5个力。但如果它们彼此相距1000px,那么其中一个节点的力几乎不会增加任何东西 有没有人知道我可以用什么数学方程式来解决这类问题,或者是朝着正确的方向轻推 TL;DR:根据两个x值的接近程度,我需要增加一个节点的x速度,使它们分开,但最终保持水平。这只是我无法破解的数学问题,我已经完成了几乎所有的JavaScript,包括velocity的实现 谢谢,很抱歉有点冗长。您只需要一个逆(或平方反比)关系:Javascript x/y距离越近,x/y速度越大,javascript,velocity,distance,Javascript,Velocity,Distance,我正在使用画布用JavaScript编写一个相当简单的脚本。它绘制一个中心节点,该节点将所有周围节点拉向它。这非常有效,但是我需要每个节点相互排斥 我将通过增加每个节点彼此之间的速度来做到这一点,这样最终它们应该保持水平,最终看起来像一朵花。它需要足够的力来阻止它们相互撞击或沉入中心节点,而不会飞到远处 我只是想不出,他们越靠近,我怎么能得到一个更高的数字 因此,如果两个节点彼此相距10px,那么它们的一个x速度将增加5个力。但如果它们彼此相距1000px,那么其中一个节点的力几乎不会增加任何东
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时,我将使用什么作为增量?他们还在四处飞行