如何计算在一定距离内达到一定速度所需的减速度?

Eli*_*Eli 9 physics acceleration

我已经为此尝试了典型的物理方程,但它们都没有真正起作用,因为方程式处理的是恒定加速度,我的需要改变才能正常工作.基本上我有一辆可以在很大的速度范围内行驶的汽车,当它到达路径的末端时需要减速并停留给定的距离和时间.

所以,我有:
V0,或当前速度
Vf,或我想要达到的速度(通常为0)
t,或者我想要达到路径末端的时间量
d,或者我想改变的距离从V0到Vf

我想计算
a,或从V0到Vf所需的加速度

这成为一个特定于编程的问题的原因是因为a需要在汽车停止时每一个时间步重新计算.因此,V0不断地改变为V0从最后的时间步长plusa是计算最后的时间步长.所以基本上它会开始缓慢停止然后最终会突然停止,有点像现实生活中的汽车.

编辑:
好的,谢谢你们的好评.我需要的很多东西只是帮助思考这个问题.现在让我更具体一点,我从你们所有人那里得到了更多的想法:

我有一辆车c64 pixels从它的目的地,所以d=64.它正在开车2 pixels per timestep,在哪里timestep is 1/60 of a second.我想找到加速度a,使其达到0.2 pixels per timestep行进时的速度d.
d = 64 //distance
V0 = 2 //initial velocity (in ppt)
Vf = 0.2 //final velocity (in ppt)

此外,因为这发生在游戏循环中,变量delta将传递给每个动作,即multiple of 1/60s that the last timestep took.换句话说,如果需要1/60秒,delta则为1.0,如果花费1/30秒,delta则为0.5.在实际应用加速之前,将其乘以此增量值.类似地,在汽车再次移动之前,其速度乘以Δ值.这是非常标准的东西,但它可能是导致我的计算出现问题的原因.

Ken*_* K. 9

从起始速度到最终速度a的距离的线性加速度:dViVf

a = (Vf*Vf - Vi*Vi)/(2 * d)
Run Code Online (Sandbox Code Playgroud)

编辑:

编辑完成后,让我试着测量你需要的东西......

如果您使用此公式并插入数字,则会得到-0,0309375的恒定加速度.现在,让我们继续称这个结果为'a'.

你在时间戳(帧?)之间需要的不是加速度,而是车辆的新位置,对吧?所以你使用以下公式:

Sd = Vi * t + 0.5 * t * t * a
Run Code Online (Sandbox Code Playgroud)

其中Sd是当前帧/时刻/ sum_of_deltas的起始位置的当前距离,Vi是起始速度,t是自开始起的时间.

这样,你的减速度恒定的,但即使它是线性的,你的速度也会适应你的约束.

如果你想要一个非线性减速,你可以找到一些非线性插值方法,并且插值不是加速度,而只是在两点之间定位.

location = non_linear_function(time);
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 6

对于线性系统(具有恒定加速度的系统),您给出的四个约束太多了,其中任何三个变量足以计算加速度,从而确定第四个变量.然而,对于完全一般的非线性系统而言,系统的指定方式不足 - 在满足所给出的所有约束的同时,可能存在无数无限的方式来改变加速度.您是否可以更好地指定哪种曲线加速度应随时间变化?

使用0指数表示"在开始时",1表示"在结束时",D表示"均值"表示"变化",给定线性变化的加速度

  a(t) = a0 + t * (a1-a0)/Dt
Run Code Online (Sandbox Code Playgroud)

其中a0和a1是我们想要计算以满足所有各种约束的两个参数,我计算(如果没有失误,我手工完成):

DV = Dt * (a0+a1)/2
Ds = Dt * (V0 + ((a1-a0)/6 + a0/2) * Dt)
Run Code Online (Sandbox Code Playgroud)

给定DV,Dt和Ds都给出了,这在未知数a0和a1中留下了2个线性方程,所以你可以解决这些问题(但是我将这些形式留下来以便更容易仔细检查我的推导! ).

如果你在每一步都应用适当的公式来计算空间和速度的变化,那么你是否一劳永逸地计算a0和a1或者根据剩余的Dt,Ds和DV在每一步重新计算它们都没有区别.


duf*_*ymo 5

如果你试图模拟方程中与时间相关的加速度,那就意味着你应该假设它.你必须将F = ma与加速度方程一起整合,这就是全部.如果加速度不是常数,你只需要求解一个方程组而不是一个方程组.

所以现在它实际上是三个矢量方程,你必须同时整合:一个用于位移,速度和加速度的每个分量,或总共九个方程.作为时间函数的力将是您的问题的输入.

如果您正在假设一维运动,则可以使用三个联立方程.速度和位移都很容易.