在2D平面上重叠多边形

时间:2010-08-10 11:28:55

标签: java algorithm data-structures polygon

我想构建一个动态数据结构,它可以保存多边形列表并返回与指定矩形重叠的多边形列表。

我查看了bst树(和四棵树),但当多边形重叠时,这些似乎不能很好地工作。

在我推翻自己的废话之前,我应该检查出任何好的想法吗?

修改

让我们假设所有多边形都是正常的非旋转矩形。我愿意在点测试期间接受命中(多边形测试中的点)(无论如何我可能会这样做),并且在区域测试期间获得他们的边界框也同样好。只有一小部分实际上不会与相关区域重叠。

3 个答案:

答案 0 :(得分:2)

我会看2-d segment delaunay graphs。另见Nef polygons。 CGAL在polygons上有很多设置操作。这个question的答案也可能有价值

修改如果您的多边形是非旋转矩形,请参阅R-Trees

答案 1 :(得分:0)

为什么你自己写这个? Java提供复杂的交叉测试。您可以将多边形数据结构和矩形转换为Java.awt.geom.Area,然后调用Area.intersect()方法,该方法可以为您完成所有数学运算。

它还会处理所有很少发生(但仍然很重要)的特殊情况,这些情况真的很难被捕获。

答案 2 :(得分:0)

我刚写了一个常规的四叉树,它允许每个叶子节点保持无限多边形,如果叶子的边界与桶中每个多边形的边界相等。否则叶子节点在分裂之前限制为8个多边形。