|
|
| 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.