惯性滚动算法框架独立 - 预测结束位置

时间:2015-07-14 02:33:55

标签: ios algorithm math uiscrollview physics

我通过执行以下操作成功实现了我的滚动算法:当用户释放手指时,我保存当前速度,然后,每一帧,我应用以下摩擦公式speed *= pow(friction, dt),其中摩擦是0到1之间的值,dt是自上一帧以来的时间。然后,当它足够接近零时,我会停止更新。

但是,我想知道当手指被释放时滚动将在哪里结束,因为我想调整它以使滚动最终以项目为中心。

它非常类似于UIScrollView的scrollViewWillEndDragging函数(scrollView:withVelocity:targetContentOffset :)

总结一下,我正在寻找一个公式,将初始速度转换为总增量运动,并将反向公式增量运动转换为速度。

1 个答案:

答案 0 :(得分:1)

似乎您的速度由公式

描述
V = V0 * Exp(- k * t)

(确保显示时刻0,dt,2dt,3dt的速度)

其中V0是起始速度,k是摩擦系数(取决于你的friction) 要找到距离,我们必须整合速度(link

S = Integral[0..Infinity] (V * dt) = V0 / k