计算一段时间后加速体的位置

时间:2008-09-30 15:16:58

标签: math physics equation

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

对于一个没有加速的移动体,它是一个线性关系,所以我认为它是一个加速的身体,它涉及到某个地方。

有什么想法吗?

5 个答案:

答案 0 :(得分:34)

等式为:s = ut +(1/2)a t ^ 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(通常在游戏中使用)和4th order Runge Kutta(科学应用的“标准”方法)以改进算法。

答案 1 :(得分:7)

嗯,这取决于加速度是否恒定。如果它只是

s = ut+1/2 at^2

如果a不是常数,则需要进行数值积分。现在有各种各样的方法,他们都不会为了准确而手动这样做,因为它们都是最近的近似解决方案。

最简单,最不准确的是Euler's method。在这里,您将时间划分为称为时间步长的离散块,然后执行

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

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

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

答案 2 :(得分:1)

你可以google它。我发现了这个: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 =您当前的itme

答案 3 :(得分:1)

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

距离=(initial_velocity *时间)+(加速度*时间*时间)/ 2

,其中

距离是行进的距离

initial_velocity 是初始速度(如果身体处于静止状态,则为零,因此在这种情况下你可以放弃这个术语)

时间是时间

加速度是(恒定)加速度

确保在计算时使用正确的单位,即米,秒等。

关于这个主题的一本非常好的书是Physics for Game Developers

答案 4 :(得分:1)

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

x(t) = (1/2 * a * t^2) + (v0 * t)