我正在xna应用程序中检测多点触控手势,这样屏幕上的某些“面板”可以接受其范围内的触控点,然后根据用户手指的移动来移动、缩放或旋转。
然而,由于屏幕是一个带有10秒触摸点的大型多点触摸屏,一个面板有时可以同时接受5个(甚至更多)手指,我在网上发现的大多数东西仅限于使用2个触摸点的手势。
我通过计算某个面板上所有触摸的中心点来处理移动和缩放手势:
计算当前接触的中心点(平均X,平均Y)
计算上一次时间戳接触的中心点(平均x,平均y)
使用差异移动和缩放面板。
但我不知道如何接近旋转。有没有算法能快速得到这个(近似)旋转角度?我应该计算每个点和中心之间的角度,然后使用delta值吗也许有更好的方法吗?

最佳答案

找两个距离最大的点,然后用它们。这对我来说是最直观的。
想象一下,一只手张开,5个手指在屏幕上旋转,在这种情况下,最重要的是拇指和小指之间的旋转。
或者考虑一个双手的手势,每只手有两个手指。同样,使用此方法,您可以忽略一只手内的旋转,但捕获每只手的宽扫。
唯一的办法就是用一只手的两个手指旋转,另一只手在屏幕上的某个地方闲坐着。然后旋转看起来不起作用(例如,那只秒针在旋转,但你在寻找手与手之间的角度)。

10-07 19:34
查看更多