我已经尝试了典型的物理方程,但没有一个是真正有效的,因为方程处理的是恒定加速度,而我的方程需要改变才能正确工作。基本上,我的车可以在很大的速度范围内行驶,当它到达终点时,需要在给定的距离和时间内减速和停车。
所以,我有:
V0,或当前速度
Vf,或我想要达到的速度(通常为0)
t,即我想要到达路径终点所需的时间
d,也就是我从V0更改为Vf时要走的距离
我想计算一下
a,或从V0转到Vf所需的加速
这成为一个特定于编程的问题的原因是,当汽车不断停下来时,每一个时间步都需要重新计算a。因此,V0不断地从上一个时间步长变为V0,plus是上一个时间步长计算出的a。因此,从本质上讲,它会开始缓慢停止,然后最终会更突然地停止,就像现实生活中的汽车一样。
编辑:
好的,谢谢你的回复。我需要的只是一些思考这个问题的帮助。现在让我说得更具体一些,因为我从你们所有人那里得到了更多的想法:
我有一个从目的地64 pixels的汽车c,所以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。在实际应用加速度之前,将其乘以此增量值。同样,在汽车再次移动之前,其速度将乘以增量值。这是非常标准的东西,但它可能是导致我的计算出现问题的原因。
发布于 2009-07-06 17:28:36
在现实生活中,汽车的刹车能力取决于刹车踏板上的压力,任何正在进行的发动机刹车,表面状况,等等:还有,当汽车真正停止时,在结束时会有“抓取”。建模很复杂,而且你不太可能在编程网站上找到好的答案。找一些汽车工程师。
除此之外,我不知道你想要什么。您是否正在尝试确定制动时间表?就像在滑行时会有一定的减速,然后刹车?在实际驾驶中,这些动作通常不考虑时间,而是考虑距离。
据我所知,你的问题是你没有要求任何具体的东西,这表明你真的没有弄清楚你真正想要的是什么。如果你能为这个提供一个示例用法,我们可能会帮助你。实际上,您已经提供了一个过度确定或约束不足的问题的基本框架,而我们对此实在无能为力。
https://stackoverflow.com/questions/1088088
复制相似问题