物镜C:相机从用户的手指轻扫

时间:2011-12-31 09:49:38

标签: objective-c swipe momentum angular-momentum

我的问题是,如果用户快速滑动,我应该使用什么算法或数学来保持屏幕滑动动量以保持滚动。

示例:屏幕上有一个围绕圆圈旋转的图像,如果用户慢慢地向相机轻扫,它将随手指一起移动。但是,如果用户真的很快,那么根据用户滑动的速度,图像应该像旋转木马一样旋转几秒钟?

我能够从用户触摸屏幕的位置和用户持续滑动并抬起手指的位置获得重点,是什么想法?

我有一种方法,每秒调用60次,所以任何想法?

1 个答案:

答案 0 :(得分:1)

基本上,您需要初始速度(例如,以每秒点数测量)和减速率(以点/秒^ 2测量)。如果您使用手势识别器来检测滑动,它将为您提供免费的速度。否则,您必须自己从滑动的不同阶段的位置和时间戳计算它。

现在,在您的更新方法中,根据速度推进您的视图:

distance travelled = velocity * time

并使用减速率更新下一帧的速度:

delta_v = deceleration rate * time // should give a negative value
new velocity = velocity + delta_v

一旦速度下降到接近0的阈值,就停止运动。

这些公式适用于线性运动,但即使您正在进行圆周运动,我也会尝试使用它们。或者你可以用角速度进行相同的计算。维基百科可能有你必须知道的公式。