我们有一些折线(点列表,具有起点和终点,不是循环的)和多边形(点列表,循环,没有端点的东西)。
我们想将每个折线映射到一个新的折线,并将每个多边形映射到一个新的多边形,以使边的总数足够小。
比方说,原本的边数为N,我们希望我们的结果有M条边。 N比M大得多。
折线需要保留其起点和终点,因此它们贡献的边至少为1,比顶点数少1。多边形仍然需要是多边形,因此它们至少贡献3个边,等于它们的顶点数。 M至少要满足此要求。
输出应尽可能靠近输入。这最终将成为一个优化问题,即将一些指标最小化到真正最佳解决方案的较小公差内。最初,我会使用原始数据和结果(区域之间)的对称差异区域,但是如果另一个度量标准使此操作更容易实现,那么我会很乐意接受。
如果结果仅包含原始顶点,这没关系,拟合度会稍差一些,但可能有必要降低时间复杂度。
由于我要的是算法,也很高兴看到一个实现。无论如何我都可能不得不重新实现它,所以像什么语言或什么数据结构这样的细节都不会太重要。
关于从位图图像获取矢量图像的期望值,逼近程度有多好。尽管这里的实际用途是用于游戏的工具,但是特定游戏有一些奇怪的细节,这就是为什么输出边数是固定的而不是公差的原因。
很难找到关于这种事情的任何信息,因此,即使没有提供完整可行的算法,也将非常感谢一些指针。