找到重叠的凸多边形

时间:2016-04-07 15:52:53

标签: computational-geometry overlap convex-polygon

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

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

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

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

enter image description here

1 个答案:

答案 0 :(得分:0)

在二维中用于此类问题的一种传统方法是构建四叉树,它将您的2D空间分层划分为连续较小的桶,直到每个桶中有少量对象为止。

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

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

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

  • 为每个多边形分配一个唯一的数字(深度)
  • 将每个多边形栅格化为缓冲区,检查每次写入缓冲区以查看是否已遮挡已设置的像素。如果是这样,深度将标识您已遮挡的多边形以及您为其遮挡的多边形所写的新值。