我有一组点S(2D:由x和y定义),我想找到P,最小的多边形(意思是:点数最少)将集合中的所有点包围,P是S的有序子集。
是否有已知算法来计算这个问题?(我在此领域缺乏文化知识...)
谢谢您的帮助
我有一组点S(2D:由x和y定义),我想找到P,最小的多边形(意思是:点数最少)将集合中的所有点包围,P是S的有序子集。
是否有已知算法来计算这个问题?(我在此领域缺乏文化知识...)
谢谢您的帮助
这里有一个简单的解决方案...
首先任意选择三个点来组成三角形。然后使用以下操作将每个额外的点添加到多边形中:
将边缘分为两条连续路径,在其中一条路径中,每个边缘的线都将要添加的点与多边形的其余部分分开(我们称之为“分离路径”),在另一条路径中,每个边缘的线都将点放在多边形的同侧。
(注意:只要您的形状保持凸性,这两条路径就会是连续的并形成整个形状)
如果分离路径没有边缘,则该点位于多边形内部,应忽略它;否则,请从多边形中删除分离路径,并用两条线段替换它,将分离路径的每个端点连接到新点。
完成! :)
您可能是想要最小的区域,也就是凸包。
如果您真的只需要最少的点,您可以使用超大的三角形顶点位置将所有点围起来。