BifaceMcLeOD The HighGlandeur | Globalement, ce que tu cherches (si je comprends bien), c'est exactement ce que sait faire un index géographique : étant donné un ensemble (petit ou gigantesque) d'informations localisées dans le plan ou l'espace (voire plus de dimensions), c'est-à-dire chacune étant associée à des coordonnées, on veut pouvoir trouver quels sont les informations qui se trouvent en un point donné ou dans un rectangle/parallélépipède donné.
L'algorithme dit du "QuadTree" fonctionne très bien pour des données ponctuelles (i.e. surface/volume nul(le)), dès lors que tu connais les bornes du plan/de l'espace à indexer (i.e. les coordonnées min et max possibles).
Le principe est le suivant (je le décris pour la 2D pour faire plus simple, mais l'algorithme est facilement adaptable à n'importe quel nombre de dimensions à partir de 2) :
- Etape 1 : soit la région "R0" qui contient toutes tes données
- Etape 2 : tu découpes cette région en 2 parties égales selon chaque dimension ; donc, en 2D, en 4 (en 3D, tu découperais en 8). Appelons ces 4 régions R1, R2, R3 et R4.
- Etape 3 : si tu as encore trop de données dans chaque région, tu découpes chacune encore en 2 suivant chaque dimension, pour obtenir, en 2D, les régions R11, R12, R13, R14, R21, R22, R23, R24, R31, R32, R33, R34, R41, R42, R43 et R44. Et tu recommences le découpage jusqu'à ce que chacune des régions obtenues contienne un nombre raisonnable de données (i.e. pas trop grand ; à toi de décider combien). Cette liste d'informations de taille raisonnable constitue un fichier sur disque.
- Dernière étape, la recherche : quelles sont les données dans ce rectangle/parallélépipède (typiquement celui que tu veux visualiser). A partir des coordonnées de la région à rechercher et des coordonnées min et max possibles, il est assez facile de trouver le numéro de la région ou des régions qui la contien(nen)t, donc le nom du ou des fichiers qui contien(nen)t les informations de cette/ces région(s)-là. Les données que tu recherches sont dedans.
Le nom de "QuadTree" vient du fait que l'on construit par cet algorithme une structure en arbre, dont la racine est R0, et dont les noeuds fils d'un noeud/région Rn sont les 4 sous-régions Rn1, Rn2, Rn3 et Rn4 ("Quad" parce que découpage en 4, pour la 2D). Message édité par BifaceMcLeOD le 10-09-2002 à 14:43:23
|