J'ai un certain nombre de cuboïdes dont les positions et les tailles sont données avec les coordonnées minimum et maximum x
, y
et z
(donc elles sont parallèles aux axes principaux).Comment déterminer les cuboïdes d'un point sans les parcourir tous?
par exemple. Je pourrais avoir les 3 parallélépipèdes suivants:
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
Si je donne alors un point (par exemple (25.3,10.2,90.65)
), est-il un moyen de déterminer rapidement les cuboïde (s) je suis?
Il est évident que je pouvais itérer sur tous les parallélépipèdes, mais il y a potentiellement des millions d'entre eux, et je besoin de ceci pour aller plus vite que l'itération simple (quelque chose O (log n) ou mieux serait génial).
Cela me semble un problème de type « correspondance floue », et je remarque que Apache Lucene soutient range queries, mais cela semble fonctionner dans le sens opposé rond (trouver un point dans un parallélépipède plutôt que d'un parallélépipède contenant un point) . Pour compliquer légèrement les choses, le nombre de dimensions peut être supérieur à 3 (il pourrait être supérieur à 20); dire que je pourrais être à la recherche de « hypercuboids » plutôt que parallélépipèdes)