位置とサイズが最小値と最大値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 までになる可能性があります)。つまり、立方体ではなく「超立方体」を探している可能性があります。)