Domanda

In un Octree, ogni nodo ha fino a otto nodi figlio. Questo può essere implementato con otto puntatori per nodo impostati su puntatori nulli se il bambino non viene utilizzato. Un'altra implementazione utilizza un byte come maschera bit che i negozi che i bambini vengono utilizzati e un puntatore al primo figlio. I bambini sono conservati consecutivamente allora.

Sono interessato al ray-tracing di sparsi voxel octrees, quindi trovare la prima foglia che si interseca con un raggio è l'operazione principale sull'albero.

Per semplificare le attuali implementazioni, mi chiedo se avrebbe senso rappresentare un Octree come albero binario che ad ogni nodo taglia in due lo spazio esattamente nel mezzo. Gli strati di profondità si alternerebbero tra i tre possibili orientamenti del piano di taglio. Quindi tre livelli dell'albero binario corrispondono a un livello in un Octree convenzionale.

  1. YZ-Plane (root)
  2. XZ-Plane
  3. XY-Plane
  4. YZ-Plane
  5. ...

Questo è simile all'idea di alberi kd, che sono anche alberi binari per il partizionamento dello spazio. Tuttavia, memorizzano gli aerei di taglio con i nodi per consentire il partizionamento irregolare.

C'è una differenza tra Octree e un albero binario di tre volte la profondità o sono equivalenti? Se c'è, perché l'octree viene usato più comunemente? Non ho trovato alcun riferimento a qualcuno che utilizza l'albero binario spiegato per il partizionamento dello spazio. Forse mi manca solo il termine corretto per questo.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top