Question

Dans un octree, chaque nœud a jusqu'à huit nœuds enfants. Cela peut être mis en œuvre avec huit pointeurs par nœud qui sont définis sur des pointeurs nuls si l'enfant n'est pas utilisé. Une autre implémentation utilise un octet comme masque de bits qui stocke que les enfants sont utilisés et un pointeur vers le premier enfant. Les enfants sont alors stockés consécutivement.

Je suis intéressé par le tracé des rayons de Voxel Octrees clairsemé, donc trouver la première feuille qui se croise avec un rayon est l'opération principale de l'arbre.

Pour simplifier les implémentations actuelles, je me demande s'il serait logique de représenter un OCTree comme arbre binaire qui à chaque nœud bissette l'espace exactement au milieu. Les couches de profondeur alterneraient entre les trois orientations possibles du plan de coupe. Ainsi, trois niveaux de l'arbre binaire correspondent à un niveau dans un Octree conventionnel.

  1. Yz-plan (racine)
  2. XZ-Plan
  3. Xy-plan
  4. Yz-plan
  5. ...

Ceci est similaire à l'idée de kd arbres, qui sont également des arbres binaires pour le partitionnement spatial. Cependant, ils stockent des avions de coupe avec les nœuds pour permettre un partitionnement inégal.

Y a-t-il une différence entre l'octree et un arbre binaire de trois fois la profondeur, ou sont-ils équivalents? S'il y en a, pourquoi l'octree est-il utilisé plus souvent? Je n'ai trouvé aucune référence à quelqu'un utilisant l'arbre binaire expliqué pour le partitionnement de l'espace. Peut-être que je manque le terme correct pour cela.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top