| 1 | rschregle | 2.1 | /* | 
| 2 |  |  | ======================================================================= | 
| 3 |  |  | Header for building out-of-core octree data structure | 
| 4 |  |  |  | 
| 5 |  |  | Roland Schregle (roland.schregle@{hslu.ch, gmail.com}) | 
| 6 |  |  | (c) Lucerne University of Applied Sciences and Arts, | 
| 7 |  |  | supported by the Swiss National Science Foundation (SNSF, #147053) | 
| 8 |  |  | ======================================================================= | 
| 9 |  |  |  | 
| 10 |  |  | $Id: oocbuild.h,v 1.5 2015/08/05 17:29:01 taschreg Exp $ | 
| 11 |  |  | */ | 
| 12 |  |  |  | 
| 13 |  |  |  | 
| 14 |  |  | #ifndef OOC_BUILD_H | 
| 15 |  |  | #define OOC_BUILD_H | 
| 16 |  |  |  | 
| 17 |  |  | /* Bottom-up construction of out-of-core octree in postorder traversal. | 
| 18 |  |  | * The octree oct is assumed to be initialised with its origin (oct -> | 
| 19 |  |  | * org), size (oct -> size), key callback (oct -> key), and its | 
| 20 |  |  | * associated leaf file (oct -> leafFile). | 
| 21 |  |  |  | 
| 22 |  |  | * Records are read from the leafFile and assumed to be sorted in | 
| 23 |  |  | * Z-order, which defines an octree leaf ordering.  Leaves (terminal | 
| 24 |  |  | * nodes) are constructed such that they contain <= leafMax records and | 
| 25 |  |  | * have a maximum depth of maxDepth. | 
| 26 |  |  |  | 
| 27 |  |  | * Note that the following limits apply: | 
| 28 |  |  | *    leafMax  <= OOC_OCTCNT_MAX     (see oococt.h) | 
| 29 |  |  | *    maxDepth <= OOC_MORTON_BITS    (see oocsort.h) | 
| 30 |  |  |  | 
| 31 |  |  | * The maxDepth limit arises from the fact that the Z-ordering has a | 
| 32 |  |  | * limited resolution and will map node coordinates beyond a depth of | 
| 33 |  |  | * OOC_MORTON_BITS to the same Z-index, causing nodes to be potentially | 
| 34 |  |  | * read out of sequence and winding up in the wrong octree nodes. | 
| 35 |  |  |  | 
| 36 |  |  | * On success, the octree pointer oct is returned, with the constructed | 
| 37 |  |  | * nodes in oct -> nodes, and the node count in oct -> numNodes.  On | 
| 38 |  |  | * failure, NULL is returned.  */ | 
| 39 |  |  | OOC_Octree *OOC_Build (OOC_Octree *oct, unsigned leafMax, | 
| 40 |  |  | unsigned maxDepth); | 
| 41 |  |  | #endif | 
| 42 |  |  |  |