【发布时间】:2012-02-15 15:00:17
【问题描述】:
我正在寻找一种方法来检查矩形集合 (Java TreeSet) - 由“可比较”Java 类实现,该类使用 google guava Range for x 和 y 范围 - 交叉点和孔。 我知道一个选项可能是使用 kd-trees,但我不知道如何构建这样一个 kd-tree(对于矩形,它应该是 4d,不是吗?)以及如何解决问题(交叉点,孔)。
排序将 x 轴优先于 y 轴。
编辑:(尝试重述问题):用例是创建任意表(由 2 或 3 个矩形块“标题”、“前列”、“数据”组成) .我必须保证每个块中没有交叉点和漏洞(即由无效的 html 或其他表格数据源提供)(除此之外,块必须组合在一起)。 目前(刚刚有了一个想法)我尝试保存一个二维数组,其中位置(x,y)被占用。最后,所有位置都必须被占用一次。
【问题讨论】:
-
我建议您重述问题,尽可能详细。如果你不能说明问题,解决方案就很难看到。
-
矩形的边缘平行于 x/y 轴还是可以在任何方向上?
-
边缘是平行的,要填充的矩形由所有 x 范围和所有 y 范围的跨度定义。
-
您当前检查所有 (x,y) 位置的解决方案是否不起作用?您是否需要支持如此大的 (x,y) 坐标,以至于填充二维数组会太慢?
-
这些区域很小,包含的矩形总是少于 1000 个 - 我说的是人类可以阅读的表格。
标签: java algorithm tree geometry treeset