|
| OctreeNode (const OctreeNode &)=delete |
|
OctreeNode & | operator= (const OctreeNode &)=delete |
|
| OctreeNode () |
| Dummy constructor, called only during memory allocation in memory pool.
|
|
| OctreeNode (LooseOctree *const tree, OctreeNode *const pParent, const Vec3d &nodeCenter, const double halfWidth, const uint32_t depth) |
| OctreeNode constructor, called during node splitting when initializing children node.
|
|
bool | isLeaf () const |
| Check if this node is a leaf node.
|
|
OctreeNode * | getChildNode (const uint32_t childIdx) const |
| Get a child node. More...
|
|
OctreePrimitive * | getPrimitiveList (const OctreePrimitiveType type) const |
| For the given primitive type, return the head node of the primitive list of that type.
|
|
uint32_t | getPrimitiveCount (const OctreePrimitiveType type) const |
| Get the number of primitives of the given type in this node.
|
|
const Vec6d | getBounds () |
| Get the bounds of the node.
|
|
const Vec6d | getLooseBounds () |
| Get the loose bounds of the node.
|
|
void | clearPrimitiveData (const OctreePrimitiveType type) |
| Recursively clear primitive data (linked lists and counters) Note that the primitives are still exist in the octree primitive list, they are just removed from the node. More...
|
|
void | split () |
| Split node (requesting 8 children nodes from memory pool)
|
|
void | removeAllDescendants () |
| Recursively remove all descendant nodes (return them back to memory pool) As a result, after calling to this function, the current node will become a leaf node.
|
|
void | removeEmptyDescendants () |
| Recursively remove all descendant nodes that do not contain primitives (all 8 children of a node are removed at the same time)
|
|
void | keepPrimitive (OctreePrimitive *const pPrimitive, const OctreePrimitiveType type) |
| Keep the primitive at this node as cannot pass it down further to any child node.
|
|
void | insertPoint (OctreePrimitive *const pPrimitive) |
| Insert a point primitive into the subtree in a top-down manner.
|
|
void | insertNonPointPrimitive (OctreePrimitive *const pPrimitive, const OctreePrimitiveType type) |
| Insert a non-point primitive into the subtree in a top-down manner.
|
|
bool | contains (const Vec3d &point) |
| Check if the given point is contained exactly in the node boundary (bounding box)
|
|
bool | contains (const std::array< double, 3 > &point) |
|
bool | contains (const double x, const double y, const double z) |
|
bool | contains (const std::array< double, 3 > &lowerCorner, const std::array< double, 3 > &upperCorner) |
| Check if the given non-point primitive (triangle/analytical geometry) is exactly contained in the node boundary (bounding box) More...
|
|
bool | looselyContains (const Vec3d &point) |
| Check if the given point is contained in the node loose boundary (which is 2X bigger than the bounding box)
|
|
bool | looselyContains (const std::array< double, 3 > &point) |
|
bool | looselyContains (const double x, const double y, const double z) |
|
bool | looselyContains (const std::array< double, 3 > &lowerCorner, const std::array< double, 3 > &upperCorner) |
| Check if the given non-point primitive (triangle/analytical geometry) is contained in the node loose boundary (which is 2X bigger than the bounding box) More...
|
|
bool | looselyOverlaps (const std::array< double, 3 > &lowerCorner, const std::array< double, 3 > &upperCorner) |
| Check if the bounding box of the given primitive (triangle/analytical geometry) overlaps with the loose boundary of this tree node (which is 2X bigger than the bounding box) More...
|
|
The OctreeNode class.
Definition at line 83 of file imstkLooseOctree.h.