javascript - x/y 越近,x/y 速度越快

标签 javascript velocity distance

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

我将通过增加每个节点彼此远离的速度来做到这一点,因此最终它们应该趋于平稳并最终看起来像一朵花。它需要足够的力来阻止它们相互撞击或沉入中心节点而不飞出远处。

我只是想不通他们离得越近,我怎么能得到更高的数字。

因此,如果两个节点彼此相距 10px,则它们的 x 速度之一将有效增加 5。但是,如果它们彼此相距 1000 像素,那么它几乎不会增加其中一个节点的力。

有谁知道我可以用来解决这类问题的数学方程式,或者可以向正确的方向插入?

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

谢谢,抱歉有点啰嗦。

最佳答案

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

var increment = k / distance;

或:

var increment = k / (distance * distance);

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

关于javascript - x/y 越近,x/y 速度越快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6113505/

相关文章:

javascript - 滑动时禁用网页导航(后退和前进)

javascript - 如何在 Next.js 中设置 head?

javascript - 为什么逗号不能出现在 Javascript 对象键中?

java - 计算二维数组中的距离,非对角线

r - 应该很容易 : distance along a line in R?

javascript - 用 jQuery/javascript 替换页面中的字符串

c# - 统一: Knockback my player

javascript - 访问速度模板中的 jquery/javascript 变量

java - Apache 的 Velocity — getTemplate() 。如何传递字符串/对象而不是 .VM 文件

java - 使用蓝牙获取两个 Android 设备之间的距离