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 |
greg |
2.2 |
$Id: oocbuild.h,v 2.1 2016/05/17 17:39:47 rschregle Exp $ |
11 |
rschregle |
2.1 |
*/ |
12 |
|
|
|
13 |
|
|
|
14 |
|
|
#ifndef OOC_BUILD_H |
15 |
|
|
#define OOC_BUILD_H |
16 |
|
|
|
17 |
greg |
2.2 |
#ifdef __cplusplus |
18 |
|
|
extern "C" { |
19 |
|
|
#endif |
20 |
|
|
|
21 |
rschregle |
2.1 |
/* Bottom-up construction of out-of-core octree in postorder traversal. |
22 |
|
|
* The octree oct is assumed to be initialised with its origin (oct -> |
23 |
|
|
* org), size (oct -> size), key callback (oct -> key), and its |
24 |
|
|
* associated leaf file (oct -> leafFile). |
25 |
|
|
|
26 |
|
|
* Records are read from the leafFile and assumed to be sorted in |
27 |
|
|
* Z-order, which defines an octree leaf ordering. Leaves (terminal |
28 |
|
|
* nodes) are constructed such that they contain <= leafMax records and |
29 |
|
|
* have a maximum depth of maxDepth. |
30 |
|
|
|
31 |
|
|
* Note that the following limits apply: |
32 |
|
|
* leafMax <= OOC_OCTCNT_MAX (see oococt.h) |
33 |
|
|
* maxDepth <= OOC_MORTON_BITS (see oocsort.h) |
34 |
|
|
|
35 |
|
|
* The maxDepth limit arises from the fact that the Z-ordering has a |
36 |
|
|
* limited resolution and will map node coordinates beyond a depth of |
37 |
|
|
* OOC_MORTON_BITS to the same Z-index, causing nodes to be potentially |
38 |
|
|
* read out of sequence and winding up in the wrong octree nodes. |
39 |
|
|
|
40 |
|
|
* On success, the octree pointer oct is returned, with the constructed |
41 |
|
|
* nodes in oct -> nodes, and the node count in oct -> numNodes. On |
42 |
|
|
* failure, NULL is returned. */ |
43 |
|
|
OOC_Octree *OOC_Build (OOC_Octree *oct, unsigned leafMax, |
44 |
|
|
unsigned maxDepth); |
45 |
greg |
2.2 |
|
46 |
|
|
#ifdef __cplusplus |
47 |
|
|
} |
48 |
|
|
#endif |
49 |
|
|
|
50 |
rschregle |
2.1 |
#endif |