我有大量顶点,其中一些是边,一些是多余的(在形状内部),我想删除它们。
我能想到的最简单的算法是一一检查它们是否碰到了其他人形成的形状。但它应该是一个非常慢的算法。
我考虑过从边缘选择一个(每个示例离原点最远的一个)并计算从这个开始的最长路径......应该得到边缘路径,对吗?
有什么建议吗?
我有大量顶点,其中一些是边,一些是多余的(在形状内部),我想删除它们。
我能想到的最简单的算法是一一检查它们是否碰到了其他人形成的形状。但它应该是一个非常慢的算法。
我考虑过从边缘选择一个(每个示例离原点最远的一个)并计算从这个开始的最长路径......应该得到边缘路径,对吗?
有什么建议吗?
我不知道找到该多边形的最佳算法是什么,但您正在寻找的多边形称为“凸壳”。
通过搜索,您应该找到匹配算法。
凸壳是计算几何中研究较多的问题之一。格雷厄姆扫描是最简单的凸包算法之一,但肯定不是唯一的。礼品包装算法,也称为 Jarvis' March,是我所知道的最简单的算法。Stony Brook 算法存储库有几种 C 和 C++ 中凸包算法的实现。Geometry in Action主要展示了凸包的应用。这是一个低维和任意维凸包计算程序的集合。