34 #ifdef AGGREGPACKING_BOOST_PYTHON
35 #include <boost/python.hpp>
54 class OctreeIterator :
public std::iterator<std::input_iterator_tag, OctreeNode<T>> {
147 Octree(
double x,
double y,
double z,
double size,
int depth);
155 Octree(
double x,
double y,
double z,
double size) :
Octree(x,y,z,size,0) {};
172 void build(
double x,
double y,
double z,
double size);
223 #ifdef AGGREGPACKING_BOOST_PYTHON
375 #ifdef AGGREGPACKING_BOOST_PYTHON
413 #ifdef AGGREGPACKING_BOOST_PYTHON
425 static inline bool bitFlag2bool(
int flag,
int index) {
return (
bool)(flag & (1 << index) ); }
434 #include "octree.tcc"
void getPotentialNeighbors(vector< T > &answer, const T &o, int scale) const
Gets potential neighbors for given object, considering its scaled size.
Definition: octree.hpp:221
~Octree()
Destructor.
Definition: octree.hpp:269
OctreeNode(double x, double y, double z, OctreeNode &parent, int number)
Constructor, used by a parent node.
Definition: octree.hpp:71
vector< T > * py_getPotentialNeighbors(double x, double y, double z, double size) const
getPotentialNeighbors function for Python
Definition: octree.hpp:310
Octree()
Default constructor.
Definition: octree.hpp:138
const OctreeNode< T > & operator*() const
Dereference operator.
Definition: octree.hpp:112
OctreeNode< T > & operator*()
Dereference operator.
Definition: octree.hpp:79
bool operator!=(const OctreeNode &other)
Inequality operator, intended for Python.
Definition: octree.hpp:302
double getSize()
Getter for size.
Definition: octree.hpp:164
Octree(double x, double y, double z, double size)
Constructor.
Definition: octree.hpp:155
OctreeIterator & operator++()
Operator++.
Definition: octree.hpp:34
OctreeNode ** children
Child nodes.
Definition: octree.hpp:255
vector< T > data
Vector of data belonging to the node.
Definition: octree.hpp:258
const vector< T > & getData() const
Getter for data (by const reference)
Definition: octree.hpp:323
OctreeConstIterator(OctreeNode< T > *ptr)
Constructor from octree node pointer.
Definition: octree.hpp:94
bool containsEntireBox(double x, double y, double z, double size) const
Returns if receiver contains entirely given box or not.
Definition: octree.hpp:134
vector< T > * py_getPotentialNeighbors(const T &o) const
Returns new vector of potential neighbors, intended for Python.
Definition: octree.hpp:418
OctreeIterator< T > end()
Octree iterator end.
Definition: octree.hpp:193
const OctreeNode * getParent() const
Getter for parent (by const pointer)
Definition: octree.hpp:338
double getX()
Getter for x coordinate.
Definition: octree.hpp:305
vector< OctreeNode * > * py_getChildrenIntersectingBox(const T &o) const
Returns vector of children intersecting box, intended for Python.
Definition: octree.hpp:380
void getPotentialNeighbors(vector< T > &answer, const T &o) const
Gets potential neighbors for given object.
Definition: octree.hpp:214
vector< T > * py_getPotentialNeighbors(double x, double y, double z, double size) const
Returns new vector of potential neighbors, intended for Python.
Definition: octree.hpp:239
OctreeNode< T > * getRoot()
Getter for root (by pointer)
Definition: octree.hpp:175
int getChildrenIntersectingBox(double x, double y, double z, double size) const
Returns children intersecting given box.
Definition: octree.hpp:149
const OctreeNode< T > * operator->() const
Operator ->
Definition: octree.hpp:115
void divide(int depth)
Divides receiver until defined depth.
Definition: octree.hpp:82
bool operator==(const OctreeConstIterator &rhs)
Equality operator.
Definition: octree.hpp:106
OctreeNode< T > * ptr
stored octree node
Definition: octree.hpp:90
OctreeIterator< T > iterator
Octree iterator.
Definition: octree.hpp:187
vector< T > & getData()
Getter for data (by non-const reference)
Definition: octree.hpp:326
bool containsEntireBox(const T &o) const
Returns if receiver contains entirely axis aligned box made around given object.
Definition: octree.hpp:361
OctreeNode * parent
Parent node.
Definition: octree.hpp:261
vector< T > * py_getPotentialNeighbors(const T &o) const
getPotentialNeighbors function for Python
Definition: octree.hpp:228
Class representing octree node.
Definition: octree.hpp:46
OctreeIterator(OctreeNode< T > *ptr)
Constructor from octree node pointer.
Definition: octree.hpp:61
double getZ()
Getter for z coordinate.
Definition: octree.hpp:311
int getLevel()
Getter for level.
Definition: octree.hpp:317
void getPotentialNeighbors(vector< T > &answer, double x, double y, double z, double size) const
Gets potential neighbors around given point and size.
Definition: octree.hpp:301
void build(double x, double y, double z, double size)
Builds the octree structure.
Definition: octree.hpp:275
~OctreeNode()
Destructor.
Definition: octree.hpp:74
int getDepth()
Getter for depth.
Definition: octree.hpp:161
OctreeConstIterator operator++(int)
++operator
Definition: octree.hpp:103
Class representing full octree.
Definition: octree.hpp:128
OctreeNode * getRoot()
Getter for root (by pointer)
Definition: octree.hpp:192
double getY()
Getter for y coordinate.
Definition: octree.hpp:308
void getPotentialNeighbors(vector< T > &answer, double x, double y, double z, double size) const
returns vector of objects from receiver and its children
Definition: octree.hpp:222
OctreeNode< T > * ptr
stored octree node
Definition: octree.hpp:57
double y
y coordinate
Definition: octree.hpp:249
const OctreeNode ** getChildren() const
Getter for children (by const pointer to pointer)
Definition: octree.hpp:329
vector< T > * py_getPotentialNeighbors(const T &o, int scale) const
getPotentialNeighbors function for Python
Definition: octree.hpp:231
bool isLeaf() const
Returns if receiver is leaf or not.
Definition: octree.hpp:344
void getPotentialNeighbors(vector< T > &answer, const T &o) const
returns vector of objects from receiver, its neighbors and their children
Definition: octree.hpp:411
int getNumberOfNodes()
Returns total number of nodes of receiver.
Definition: octree.hpp:293
bool operator!=(const OctreeIterator &rhs)
Inequality operator.
Definition: octree.hpp:76
bool isRoot() const
Returns if receiver is root or not.
Definition: octree.hpp:341
OctreeConstIterator & operator++()
Operator++.
Definition: octree.hpp:42
OctreeIterator operator++(int)
++operator
Definition: octree.hpp:70
int level
level of the node
Definition: octree.hpp:264
OctreeNode * next() const
Returns next node.
Definition: octree.hpp:199
OctreeIterator< T > begin()
Octree iterator begin.
Definition: octree.hpp:190
vector< OctreeNode * > * py_getChildren()
Getter for children (as a vector, intended for Python)
Definition: octree.hpp:97
static bool bitFlag2bool(int flag, int index)
Auxiliary function to extract indexed value from bitmask flag.
Definition: octree.hpp:425
double size
Dimension of the node.
Definition: octree.hpp:267
vector< OctreeNode * > * py_getChildrenIntersectingBox(double x, double y, double z, double size) const
Returns vector of children intersecting box, intended for Python.
Definition: octree.hpp:173
Octree iterator.
Definition: octree.hpp:54
const OctreeNode< T > * getRoot() const
Getter for root (by const pointer)
Definition: octree.hpp:178
double x
x coordinate
Definition: octree.hpp:246
int number
Number of the node.
Definition: octree.hpp:270
int depth
Depth (number of levels)
Definition: octree.hpp:131
void addData(const T &data)
Adds data to receiver or its children. Determines x,y,z and size from given data. ...
Definition: octree.hpp:109
int getChildrenIntersectingBox(const T &o) const
Returns children of receiver receiver intersecting axis aligned box made around given object...
Definition: octree.hpp:373
OctreeNode< T > * operator->()
Operator ->
Definition: octree.hpp:82
OctreeNode< T > * root
Root node.
Definition: octree.hpp:134
bool operator!=(const OctreeConstIterator &rhs)
Inequality operator.
Definition: octree.hpp:109
void addData(const T &data)
Adds data to Octree.
Definition: octree.hpp:283
OctreeIterator(const OctreeIterator &it)
Copy constructor.
Definition: octree.hpp:64
OctreeNode * getParent()
Getter for parent (by pointer)
Definition: octree.hpp:335
double z
z coordinate
Definition: octree.hpp:252
Octree iterator.
Definition: octree.hpp:87
double getSize()
Getter for size.
Definition: octree.hpp:314
int getNumber()
Getter for number.
Definition: octree.hpp:320
bool operator==(const OctreeNode &other)
Equality operator, intended for Python.
Definition: octree.hpp:299
OctreeConstIterator< T > begin() const
Octree const iterator begin.
Definition: octree.hpp:196
bool operator==(const OctreeIterator &rhs)
Equality operator.
Definition: octree.hpp:73