我有一组凸多边形,边长适中(比如从4到30)。有十分之几的多边形,比如100到1000.它们中的大多数都是孤立的,但有一些形成了2到10个小组,它们之间有重叠。
我需要有效地识别那些重叠多边形组。
是否有经典算法? (我正在考虑扫描线方法,但也许有更好的方法?)在检测之前将多边形包装在盒子中是否有益?
下面是一个有代表性的案例。
答案 0 :(得分:0)
在二维中用于此类问题的一种传统方法是构建四叉树,它将您的2D空间分层划分为连续较小的桶,直到每个桶中有少量对象为止。
您的重叠检测将走四叉树,直到找到与您的对象相交的桶或桶组,然后您将针对较小的一组对象执行重叠检测。
这里有一个简单的介绍,用于构建和使用它们进行碰撞检测:Quick Tip: Use Quadtrees to Detect Likely Collisions in 2D Space
更简单但计算成本更高的方法是做一些有点像使用z缓冲区来确定一个多边形是否遮挡另一个多边形: