javascript - 通过距离和摩擦力计算速度

标签 javascript html math canvas physics

我正在用 Javascript、Canvas、HTML5 编写游戏,我刚刚发现了一个与高等数学相关的大问题。该游戏是平面 2D 游戏,因此您可以从另一个 Angular 看世界。这意味着没有重力,只有摩擦力。

代码:

var friction = 0.97

var target = {
  x: 70,
  y: 90,
}

var ball = {
  x: 10,
  y: 20,
  vx: 0,
  vy: 0,
}
var dx = ball.x - target.x
var dy = ball.y - target.y
var angle = Math.atan2(dy, dx)
var dist = Math.sqrt(dx * dx + dy * dy) // <--- AS FAR AS I'VE COME
var speed = ??? // <--- HERE IS THE PROBLEM
ball.vx = Math.cos(angle) * speed
ball.vy = Math.sin(angle) * speed

function update() {
  ball.vx *= friction
  ball.vy *= friction
  ball.x += ball.vx
  ball.y += ball.vy

  // Drawing and other unneccesary things to involve here

  window.requestAnimationFrame(update)
}

update()

所以,我的问题是:如何计算创建球的部分的速度,以使球准确地停在目标 x 和 y 位置?就我而言,我只计算了球和目标位置之间的起始距离。Soo,有什么想法吗?有这个方程式吗?

最佳答案

因此,您希望 i 在项(速度 × 摩擦i)上从 1 到 ∞ 求和,并且希望结果等于 dist。这是一个无限geometric series ,其极限为速度×摩擦力/(1 − 摩擦力)。

Formula of infinite sum

因此,只需求解速度方程,即可得到:

Solving the formula for speed

speed = (1/friction - 1)*dist

关于javascript - 通过距离和摩擦力计算速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21696384/

相关文章:

javascript - 使用该元素的 html 内容更改 li 元素的背景

html - CSS/Bootstrap : Text align vertically center

javascript - Foundation 6 显示 Modal Tiny 不工作

javascript - FB auth 的正确方法

javascript - 如何从JavaScript错误行号获取实际行

java - 是否有更有效的方法来评估字符串的包含?

java - - 四舍五入并删除小数点后的数字 -

javascript - 使用未定义的 Node js "TypeError: Cannot read property ' render' 运行 .js 文件时出错”

javascript - Node 中带有键的 JS 数组

java - 使用内联条件语句格式化小数