我有许多长方体,它们的位置和大小用 minimum 和 maximum和x
坐标给出(所以它们平行于主轴)。y
z
例如,我可能有以下 3 个长方体:
10.5 <= x <= 39.4, 90.73 <= y <= 110.2, 90.23 <= z <= 95.87 20.1 <= x <= 30.05, 9.4 <= y <= 37.6, 0.1 <= z <= 91.2 10.2 <= x <= 10.3, 0.1 <= y <= 99.8, 23.7 <= z <= 24.9
如果我然后给出一个点(例如(25.3,10.2,90.65)
),有没有办法快速确定我在哪个长方体?
显然我可以迭代所有的长方体,但可能有数百万个,我需要它比简单的迭代更快(O(log n)或更好的东西会很棒)。
这对我来说听起来像是一个“模糊匹配”类型的问题,我注意到Apache Lucene支持范围查询,但这似乎以相反的方式工作(在长方体中找到一个点,而不是在包含一个点的长方体中找到一个点)。
稍微复杂一点的是,维度的数量可能大于 3(可能高达 20);即我可能正在寻找“超长方体”而不是长方体。)