使用MATLAB查找点中的所有多边形

时间:2014-02-17 21:04:39

标签: algorithm matlab convex-polygon

我在平面上有一组点,我想找到所有凸多边形而不包括它们内的一个点。

例如,我想找到所有三角形,所有四个大小的多边形,所有四个五个大小的多边形,依此类推,直到可以找到它们而不包括它们内部的一个点。

在图像中,行 a 对应于大小为3的凸多边形。而第1列和第2列显示了我想要的正确示例,第3列显示了一个三角形,其中包含两个点,其中我不想要。

b c 显示大小为4和5的多边形示例。

b3 显示非凸多边形的示例

enter image description here

我想知道MATLAB中是否有函数或任何其他语言,或者有人知道可以做到的算法。

算法可以在点旁边接收要搜索的多边形的大小,它将返回所有可能正确的多边形,如果不包含任何该大小的多边形,则为空。

我很感激帮助。

2 个答案:

答案 0 :(得分:2)

步骤1:对点进行Delaunay-Triangulation。

第2步:

  • 对于大小为3的多边形:结果是三角形。
  • 对于大小为4的多边形:选择任意一对共享两个角的三角形
  • 对于大小为5的多边形:选择任何大小为4的多边形并将其与a配对 正好分享两个角落的三角形

答案 1 :(得分:0)

如果可行,你可以试试天真的解决方案: -

  1. 为k边多边形选择k个点
  2. 在其上应用凸壳算法
  3. 如果凸包大小等于k,则该组点形成所需的k边多边形。
  4. 时间复杂度: - O(2^N*N*logN)