我怎样才能简化复杂的多边形?

6 javascript geometry polygon

最近我一直在考虑如何将复杂多边形转换为非复杂多边形.这是怎么做到的?

这是我想要做的事情:

例

当我完成时,我将最终使用JavaScript,但任何形式的解决方案都很好(语言,算法或简单的英语).

J. *_*mes 6

我会使用与手工绘制多边形时相同的启发式方法(这可能不是用于对多边形进行caluclaute的最有效的方法,但可能最容易理解/实现).

  1. 从一点开始
  2. 找到我当前点和我想要达到的点之间的所有交叉点
  3. 如果不存在则绘制到下一个点
  4. 如果有,则绘制到那里,然后将下一个点设置为下一个点
  5. 如果你没有回到开头那么转到2.

这是 jsfiddle的一个示例实现.注意:它没有优化.