我有一组S点(2D:由x和y定义)并且我想找到P,最小的(意思是:具有最小点数)多边形包围集合的所有点,P是一个有序的S子集。
有没有任何已知算法可以计算出来? (我在这个领域缺乏文化是令人惊讶的......)
感谢您的帮助
答案 0 :(得分:30)
这个问题有很多算法。它被称为“minimum bounding box”。您也会找到搜索“convex hull”的解决方案,尤其是here。
一种方法是找到最左边的点,然后重复搜索一个点,其中所有其他点都在p(n-1)p(n)行的右边。
答案 1 :(得分:6)
这是一个简单的解决方案......
从任意三个点开始形成三角形。使用以下操作将每个附加点添加到多边形:
将边分为两条连续路径,其中在一条路径中,每条边的线将要添加的点与多边形的其余部分分开(让我们将其称为“分离路径”),在另一条路径中,将线条分开每条边的点与多边形在同一侧。
(注意:只要你的形状保持凸起,它必须是这样,这两条路径将是连续的并形成整个形状)
如果分离路径没有边,则该点位于多边形内部,应忽略,否则,从多边形中删除分离路径。将其替换为两段,将分离路径的每个端点连接到新点。
钽哒! :)
答案 2 :(得分:3)
你可能意味着你想要最小的区域,即凸包。
如果你真的想要最少的点,你可以制作一个具有超大顶点位置的三角形,这样你的所有点都会被包围。
答案 3 :(得分:2)
这是凸包算法的一个很好的资源:The Convex Hull of a 2D Point Set or Polygon (by Dan Sunday)