21

如何在一定时间(例如 1 秒)后计算加速体(例如汽车)的位置?

对于一个不加速的运动体,它是线性关系,所以我假设对于一个加速体,它在某处包含一个正方形。

有任何想法吗?

4

5 回答 5

34

等式是:s = ut + (1/2)at^2

其中 s 是位置,u 是 t=0 时的速度,t 是时间,a 是恒定加速度。

例如,如果一辆车从静止开始,以 3m/s^2 的加速度加速两秒钟,它移动 (1/2) * 3 * 2^2 = 6m

这个方程来自对方程的分析积分,这些方程表明速度是位置的变化率,加速度是速度的变化率。

通常在游戏编程情况下,人们会使用稍微不同的公式:在每一帧,速度和位置的变量不是解析地积分,而是数值积分:

s = s + u * dt;
u = u + a * dt;

其中 dt 是帧的长度(使用计时器测量:1/60 秒左右)。这种方法的优点是加速度可以随时间变化。

编辑有几个人注意到,数值积分的欧拉方法(如图所示)虽然是最简单的演示方法,但精度却相当差。请参阅Velocity Verlet(经常在游戏中使用)和4 阶 Runge Kutta(科学应用的“标准”方法)以了解改进的算法。

于 2008-09-30T15:18:54.933 回答
7

嗯,这取决于加速度是否恒定。如果是的话,那就简单了

s = ut+1/2 at^2

如果 a 不是常数,则需要进行数值积分。现在有很多种方法,但没有一种方法能比手工更准确,因为它们最终都是近似解。

最简单和最不准确的是欧拉方法。在这里,您将时间划分为称为时间步长的离散块,并执行

v[n] = v[n-1] * t * a[t]

n是索引,t是时间步长的大小。位置也同样更新。这仅适用于准确性并不那么重要的情况。Euler 方法的一个特殊版本将为弹丸运动产生一个精确的解决方案(参见 wiki),因此虽然这种方法很粗糙,但它对于某些情况来说可能是完美的。

游戏和某些化学模拟中最常用的数值积分方法是Velocity Verlet,它是更通用的 Verlet 方法的一种特殊形式。如果欧拉太粗糙,我会推荐这个。

于 2008-09-30T15:27:39.843 回答
1

你可以谷歌一下。我发现了这个:http ://www.ugrad.math.ubc.ca/coursedoc/math101/notes/applications/velocity.html

但如果你不想阅读,那就是:

p(t) = x(0) + v(0)*t + (1/2) a t^2

在哪里

  • p(t) = 时间 t 的位置
  • x(0) = 零时刻的位置
  • v(0) = 零时间的速度(如果你没有速度,你可以忽略这个术语)
  • a = 加速度
  • t = 您当前的项目
于 2008-09-30T15:21:16.613 回答
1

假设您正在处理恒定加速度,则公式为:

距离 = (initial_velocity * time) + (acceleration * time * time) / 2

在哪里

distance是经过的距离

initial_velocity是初始速度(如果身体最初处于静止状态,则为零,因此在这种情况下您可以删除该术语)

时间就是时间

加速度是(恒定的)加速度

计算时请确保使用正确的单位,例如米、秒等。

关于该主题的一本非常好的书是面向游戏开发者的物理

于 2008-09-30T15:22:36.203 回答
1

假设恒定加速度和初速度 v0,

x(t) = (1/2 * a * t^2) + (v0 * t)
于 2008-09-30T15:29:13.037 回答