包含一组点的多边形

时间:2009-05-06 09:57:54

标签: algorithm language-agnostic geometry polygon

我有一组S点(2D:由x和y定义)并且我想找到P,最小的(意思是:具有最小点数)多边形包围集合的所有点,P是一个有序的S子集。

有没有任何已知算法可以计算出来? (我在这个领域缺乏文化是令人惊讶的......)

感谢您的帮助

4 个答案:

答案 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)