计算一定时间后加速物体的位置
在一定时间(例如1秒)后,如何计算加速物体(例如汽车)的位置?
对于不加速的运动物体,它是线性关系,因此我假设对于加速物体,它在某处涉及一个正方形。
有任何想法吗?
解决方案
等式是: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秒左右)。该方法的优点是加速度可以随时间变化。
编辑几个人已经注意到,数值积分的Euler方法(如此处所示),尽管最容易证明,但其准确性却很差。有关改进的算法,请参见Velocity Verlet(通常在游戏中使用)和4阶Runge Kutta(科学应用的"标准"方法)。
你可以用谷歌搜索。我发现了这一点:http://www.ugrad.math.ubc.ca/coursedoc/math101/notes/applications/velocity.html
但是,如果我们不想阅读,那就是:
p(t) = x(0) + v(0)*t + (1/2)at^2
在哪里
- p(t)=在时间t的位置
- x(0)=零时的位置
- v(0)=零时刻的速度(如果没有速度,则可以忽略此项)
- a =加速度
- t =我们当前的项目
假设我们要处理恒定的加速度,则公式为:
距离=(初始速度时间)+(加速度时间*时间)/ 2
在哪里
距离是行进的距离
initial_velocity是初始速度(如果身体最初处于静止状态,则为零,因此在这种情况下可以删除该术语)
时间就是时间
加速度是(恒定)加速度
计算时,请确保使用正确的单位,例如米,秒等。
关于该主题的一本非常好的书是《面向游戏开发人员的物理学》。
好吧,这取决于加速度是否恒定。如果是的话
s = ut+1/2 at^2
如果a不是常数,则需要进行数值积分。现在有各种各样的方法,但它们都不是为确保准确性而手工完成的,因为它们最终都是近似的解决方案。
最简单,最不准确的是欧拉方法。在这里,我们将时间分成称为时间步长的离散块,然后执行
v[n] = v[n-1] * t * a[t]
n是索引,t是时间步长。位置也会类似地更新。这仅对精度不那么重要的情况确实有用。欧拉方法的特殊版本将为弹丸运动提供精确的解决方案(请参阅Wiki),因此,尽管这种方法很粗糙,但对于某些适应方法可能是完美的。
游戏和某些化学模拟中最常用的数值积分方法是速度Verlet,这是更为通用的Verlet方法的一种特殊形式。如果欧拉太粗略的话,我会推荐这个。
假设恒定加速度和初始速度v0,
x(t) = (1/2 * a * t^2) + (v0 * t)