如何查找手绘多边形的边和顶点

时间:2011-06-04 02:18:51

标签: algorithm gesture-recognition image-recognition vertices edges

我想制作一个形状识别程序,它会跟踪鼠标并在每1/2秒记录它的位置。我怎么能用这些点找到粗糙的多边形?换句话说,如果你只是绘制一个类似三角形或正方形的形状,它更可能是一个50-100-gon,我怎样才能简化它以获得我想要绘制的形状?我知道你可以做一个遗传算法,但不确切知道它是如何工作的,我想知道任何替代方案。

编辑:凸包不起作用,需要保留凹度。

2 个答案:

答案 0 :(得分:3)

我会试一试。

  1. 当鼠标点击事件发生点 START
  2. 时,调用该位置
  3. 每个间隔采取另一个名为 CURR
  4. 的位置
  5. 让我们调用上一个CURR PREV
  6. 计算CURR和PREV之间的斜率(delta y / delta x),
  7. 计算CURR和START
  8. 之间的直线斜率
  9. 为两个斜率之间的差异定义一些阈值
  10. 如果斜率超过阈值,
    1. 将START AND CURR之间的行存储为SIDE
    2. 将CURR定义为新的START
  11. 重复直到CURR在原始START的某个半径范围内或跨越前一个边
  12. 您可以通过计算边数来确定形状。

答案 1 :(得分:1)

对于100-agon的每个点,找到由该点形成的微小三角形的区域和两侧的点。删除创建最小三角形的点。重复,直到最小的三角形大于某个阈值。