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



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

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

我来试试。

  1. 让我们在鼠标单击事件发生时调用位置START
  2. 每个间隔采用另一个名为CURR的位置
  3. let调用上一个CURR,PREV
  4. 计算CURR和PREV之间的斜率(delta y/delta x)
  5. 计算CURR和START之间直线的斜率
  6. 为两个斜率之间的差异定义一些阈值
  7. 如果斜率超过阈值,
    1. 将START AND CURR之间的行存储为SIDE
    2. 将CURR定义为新的START
  8. 重复,直到CURR在原始START的某个半径内或穿过前面的一侧

你也许可以通过计算侧面来确定形状。

对于100边角上的每个点,找到该点和两侧点形成的小三角形的面积。删除创建最小三角形的点。重复此步骤,直到最小的三角形大于某个阈值。

最新更新