我的妻子已经接受了这项任务,所以这是我们的首要任务: - )
我有一系列积分(实际上是Northings& Eastings,但这并不重要)。我想取这些点并创建一组代表轮廓的矢量,这样我就可以在Google地球上绘图。
所以,比如:
# #
# # #
# # #
# #
#
会给:
#-----------------------#--
/ \ --#
# #------------/
\-----# /
\ /
#
我想出的一个可能的解决方案是计算每个点之间的向量,并丢弃与另一个向量重叠的每个向量。我还没有实现这个(不太确定如何),但我想知道是否还有其他方法。
该算法只需要运行几次,因此如果每次运行需要一个小时,那么RAM就不会出现问题。
答案 0 :(得分:7)
看起来你正在寻找一个多边形
这定义了一组与你的点集相关的可行候选多边形。
一个目标函数可能是“在这些多边形中,选择具有最小顶点数的那个”。这将是你的点集的凸包。其他答案解决了这种方法,所以我不会再说什么了。
但这不是您可以选择的唯一目标函数。例如,您可以在具有较少顶点,总面积较小和顶点角度较小的之间进行权衡。我不知道该问题的任何现有命名算法,但它绝对是一个有趣的算法。
一种方法可以从找到凸包开始,然后将“拉入”边缘“拉入”内部顶点,在这些位置,额外顶点的成本超过总面积较小的好处。
例如,这个:
通过沿着顶部拉动边缘会成为这个:
第二个多边形可能是一个更“自然”的点集,即使它是不点集的凸包。
答案 1 :(得分:2)
你可能正在寻找这些积分的凸面船体;有一个variety of algorithms可以找到它。
答案 2 :(得分:0)