多边形的交集和联合

时间:2011-10-27 12:19:41

标签: math matlab geometry

我有多边形定义了它们的顶点,我需要计算它们的联合和交集的区域。最令人沮丧的是它是在Mapping Toolbox中实现的,但是我不能买它。有谁知道如何制作快速算法来计算它? 感谢您的时间。

4 个答案:

答案 0 :(得分:3)

你只需要找到交叉区域;从那里可以轻而易举地获得工会的领域。来自FEX的PolygonIntersection包可能很有用。

enter image description here

答案 1 :(得分:1)

我会这样做:

  1. S 成为两个多边形的顶点集。
  2. 对于多边形1中的每个边 e 1
    1. 对于多边形2中的每个边 e 2
      1. 如果 e 1 e 2 相交
        1. 将交叉点添加到 S
  3. 删除 S 中多边形1或2内的所有顶点。
  4. 得到的顶点集应构成多边形的并集。

    对于交点,您只需删除 S 中多边形1和2 之外的所有顶点(在第三步中)。

    (你可以在其他地方查找点交叉点和“内部多边形” - 检查; - )

答案 2 :(得分:-1)

我们的想法是将每个交叉边缘分成四个部分,并用这些部分形成一个新的多边形。当你想要联合时,取两个外边。如果你想要交叉,那就拿两个内边缘。

答案 3 :(得分:-1)

我找到了多边形的交点,并为交叉/合并任务添加了多边形内/外的顶点(检查多边形1的任何顶点是否位于多边形2内,反之亦然,使用'inpolygon')。然后将所有点转换为极坐标,其中心在矩阵的平均坐标中并按角度排序,以便现在它们形成连续的闭合轮廓。知道这一点很容易使用'polyarea'找到交叉点/联合区域。