我正在实现触摸屏UI的滚动行为,但目前太累了,无法理解一些被认为是微不足道的数学问题:
y (distance/velocity)
|********
| ******
| ****
| ***
| ***
| **
| **
| *
| *
-------------------------------- x (time)
f(x)->?
此UI允许用户在任何方向上拖拽和“投掷”视图,并在释放手指后使其持续滚动一段时间。它有一种动量,取决于用户在抬起手指之前拖动的速度。
因此,我有一个起始速度(v0),并且每20ms,我按照与当前速度相关的数量滚动。随着每次滚动迭代,我会稍微降低速度,直到速度低于阈值时停止。当我通过固定量(线性)递减它时,它看起来不对劲,因此我需要建立一个负加速度模型,但无法想出一个合理的简单公式来计算必须在每次迭代中降低速度的数量。
更新:
谢谢你们到目前为止的回复,但是我仍然没有从反馈中得出一个令人满意的函数。我可能没有描述所需的解决方案足够好,因此我将尝试给出一个现实世界的例子,应该说明我想要进行的计算类型:
假设有一辆汽车在某条街道上行驶,驾驶员将刹车踩到最大,直到汽车停下来。驾驶员会在同一辆汽车上多次这样做,但以不同的速度开始刹车。当汽车减速时,我希望能够仅基于其当前速度精确地计算它将在一秒钟后拥有的速度。对于这个计算,汽车在刹车时的速度并不重要,因为所有环境因素保持不变。当然,公式中会有一些常数,但当汽车降至例如30 m/s时,在下一秒中它将走相同的距离,无论驾驶员开始刹车时它是100m/s还是50m/s驾驶。因此,自撞击刹车以来的时间也不会成为函数的参数。在某种速度下的减速度总是相同的。
在忽略空气阻力等复杂影响的情况下,如何在这种情况下计算一秒钟后的速度,假设某些任意常数用于减速、质量、摩擦或其他?我只关心动能及其由刹车产生的摩擦消散。
更新2:
现在我看到汽车的加速度将是线性的,这实际上不是我所要寻找的内容。我会清理并尝试明天的新建议。感谢到目前为止的建议。