我正在实现触摸屏 UI 的滚动行为,但此刻我太累了,无法将注意力集中在一些所谓的微不足道的数学上:
y (distance/velocity)
|********
| ******
| ****
| ***
| ***
| **
| **
| *
| *
-------------------------------- x (time)
f(x)->?
UI 应该允许用户在任何方向上拖动和“扔”视图,并且即使在他从屏幕上松开手指后也可以让它滚动一段时间。它有点动量,取决于用户在松开手指之前拖动的速度。
所以我有一个起始速度(v0),每 20 毫秒我滚动一个相对于当前速度的量。每次滚动迭代时,我都会稍微降低速度,直到我停止它时它低于阈值。当我将其减少一个固定量(线性)时,它看起来不正确,所以我需要对负加速度进行建模,但未能提出一个体面的简单公式来计算我必须降低速度的量在每次迭代中。
更新:
感谢您到目前为止的回复,但我仍然没有设法从反馈中获得令人满意的功能。我可能没有很好地描述所需的解决方案,所以我将尝试给出一个真实世界的例子来说明我想做什么样的计算:
假设某辆汽车在某条街道上行驶,驾驶员将刹车踩到最大,直到汽车停下来。驾驶员在同一条街道上多次使用同一辆车执行此操作,但开始以不同的速度制动。当汽车减速时,我希望能够仅根据当前速度计算出它在一秒钟后的速度。对于这个计算,当驾驶员开始休息时汽车以何种速度行驶并不重要,因为所有环境因素都保持不变。当然,公式中会有一些常数,但是当汽车减速到 30 m/s 时,它会在下一秒走相同的距离,无论驾驶员开始刹车时是在 100 还是 50 m/s 行驶. 因此,从击中休息开始的时间也不会是函数的参数。在一定速度下的减速度总是相同的。
在这种情况下,假设减速度、质量、摩擦等一些任意常数并忽略空气阻力等复杂影响,你如何计算一秒钟后的速度?我只追求动能和它由于打破汽车的摩擦而消散。
更新 2 我现在看到汽车的加速度是线性的,这实际上不是我想要的。明天我会清理它并尝试新的建议。感谢您迄今为止的意见。