rtsOctree.h
1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#ifndef RTSOCTREE_H
#define RTSOCTREE_H
#include "rtspoint3D.h"
template <class T>
struct octree_node
{
unsigned int center;
T data;
octree_node* ppp;
octree_node* ppn;
octree_node* pnp;
octree_node* pnn;
octree_node* npp;
octree_node* npn;
octree_node* nnp;
octree_node* nnn;
octree_node();
}
template <class T>
octree_node::octree_node()
{
ppp = NULL;
ppn = NULL;
pnp = NULL;
pnn = NULL;
npp = NULL;
npn = NULL;
nnp = NULL;
nnn = NULL;
}
template <class T>
class rtsOctree
{
public:
unsigned int num_leaves;
point3D<unsigned int> center;
octree_node* root;
rtsOctree(unsigned int sizex, unsigned int sizey, unsigned int sizez);
void Insert(unsigned int x, unsigned int y, unsigned int z, T value);
};
template <class T>
rtsOctree<T>::rtsOctree(unsigned int sizex, unsigned int sizey, unsigned int sizez)
{
center.x = sizex/2;
center.y = sizey/2;
center.z = sizez/2;
root = new octree_node();
num_leaves = 1;
}
template <class T>
void rtsOctree<T>::Insert(unsigned int x, unsigned int y, unsigned int z, T value)
{
point3D<unsigned int> current;
point3D<unsigned int> destination(x, y, z);
while(!(current == destination))
{
#endif