【问题标题】:Find overlapping convex polygons查找重叠的凸多边形
【发布时间】:2016-07-28 15:19:36
【问题描述】:

我有一组边数适中的凸多边形(比如从 4 到 30)。有十分之几的多边形,比如 100 到 1000 个。它们中的大多数是孤立的,但有少数形成了 2 到 10 个的小组,它们之间重叠。

我需要有效地识别那些重叠的多边形组。

有经典算法吗? (我正在考虑一种扫描线方法,但也许有更好的方法?)在检测之前将多边形包围在盒子中是否有益?

下面是一个有代表性的案例。

【问题讨论】:

    标签: computational-geometry overlap convex-polygon


    【解决方案1】:

    用于解决此类二维问题的一种传统方法是构建四叉树,将二维空间分层划分为连续更小的存储桶,直到每个存储桶中有少量对象。

    您的重叠检测将遍历四叉树,直到您找到与您的对象相交的一个或一组桶,然后您将对一组较小的对象执行重叠检测。

    这里有一个关于构建和使用它们进行碰撞检测的简单介绍:Quick Tip: Use Quadtrees to Detect Likely Collisions in 2D Space

    一种更简单但计算成本更高的方法是做一些类似于使用 z 缓冲区来确定一个多边形是否遮挡另一个多边形:

    • 为每个多边形分配一个唯一编号(即深度)
    • 将每个多边形栅格化到缓冲区,检查每次写入缓冲区以查看是否已遮挡已设置的像素。如果是这样,深度会确定您已遮挡的多边形以及您写入已遮挡多边形的新值。

    【讨论】:

      猜你喜欢
      • 2012-04-22
      • 1970-01-01
      • 2019-02-14
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      • 1970-01-01
      相关资源
      最近更新 更多