【发布时间】:2011-01-24 12:18:48
【问题描述】:
我正在寻找一种简单的程序化方式来检测用户是否绘制了圆形。我在 C 中工作,但很高兴使用伪代码工作。用谷歌搜索一下会发现一些(希望是)过于复杂的方法。
我将鼠标坐标跟踪为浮点数,并创建了一个向量数组来跟踪鼠标随时间的移动。本质上,我希望检测何时绘制了一个圆圈,然后忽略与该圆圈无关的所有运动数据。
我对如何实现这一点有一个基本的想法:
使用轮询功能跟踪所有移动。每次轮询函数时,都会存储当前鼠标位置。在这里,我们遍历历史位置数据并进行粗略的“对齐位置”以比较两个位置。如果新位置距离旧位置足够近,我们会删除旧位置之前的所有历史数据。
虽然这在理论上可行,但在实践中却是一团糟。有没有人有什么建议?如果建议的方法可以检测它是顺时针还是逆时针绘制,则加分。
【问题讨论】:
-
我用 Multitouch for Java 做了类似的事情,但我认为不再是这样了。可以从点到点画一条线并计算所有点的中位数en.wikipedia.org/wiki/Winding_number,但我不确定如何选择随机运动变为圆形的点。
标签: c gesture-recognition