ios - 惯性滚动算法与帧无关 - 预测结束位置

标签 ios algorithm math uiscrollview physics

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

但是,我想知道在松开手指时滚动会结束在哪里,因为我想对其进行调整,以便滚动最终会以某个项目为中心。

和UIScrollView的函数scrollViewWillEndDragging(scrollView:withVelocity:targetContentOffset:)很相似

总而言之,我正在寻找一个公式,将初始速度转化为总增量运动,并将增量运动转化为速度的反向公式。

最佳答案

看来你的速度是用公式描述的

V = V0 * Exp(- k * t)

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

其中 V0 是起始速度,k 是摩擦系数(取决于您的摩擦) 为了找到距离,我们必须对速度进行积分 ( link )

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

关于ios - 惯性滚动算法与帧无关 - 预测结束位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31396691/

相关文章:

iphone - 初始加载时的旋转

algorithm - 快速循环十进制数字进行打印(嵌入)

c# - 防止生产者爆发的算法

python - 图 st 排序或耳朵分解的任何实现?

objective-c - 如何在 - plist 数组中找到所有值?

ios - 什么是在 iOS 上使用 CSS 正确使用高分辨率 Sprite ?

java - 动态规划与背包应用

c++ - 确定基于四元数调整方向所需的角速度

c++ - 矩阵模板库矩阵求逆

ios - 如何在数组类型为 JSON 时实现自定义搜索栏