Helios++
Helios software for LiDAR simulations
|
Class representing the root node of a KDTree. More...
#include <KDTreeNodeRoot.h>
Public Member Functions | |
KDTreeNodeRoot () | |
Constructor for KDTree root node. | |
virtual bool | isDynamic () const |
Check whether the KDTree is dynamic (true) or not (false) More... | |
![]() | |
KDTreeNode () | |
Default constructor for KDTreeNode. | |
KDTreeNode (KDTreeNode const &kdtn) | |
Copy constructor for KDTreeNode. More... | |
KDTreeNode (KDTreeNode &&kdtn) | |
Move constructor for KDTreeNode. More... | |
virtual | ~KDTreeNode ()=default |
Destructor for KDTreeNode. | |
KDTreeNode & | operator= (KDTreeNode const &kdtn) |
Copy assignment operator for KDTreeNode. More... | |
KDTreeNode & | operator= (KDTreeNode &&kdtn) |
Move assignment operator for KDTreeNode. More... | |
void | swap (KDTreeNode &kdtn) |
Swap attributes of given KDTreeNode and current KDTreeNode. More... | |
void | writeObject (std::string path) |
Serialize KDTree. More... | |
![]() | |
LightKDTreeNode ()=default | |
Default constructor for LightKDTreeNode. | |
LightKDTreeNode (LightKDTreeNode const &kdtn) | |
Copy constructor for LightKDTreeNode. More... | |
LightKDTreeNode (LightKDTreeNode &&kdtn) | |
Move constructor for LightKDTreeNode. More... | |
virtual | ~LightKDTreeNode () |
Destructor for LightKDTreeNode. | |
LightKDTreeNode & | operator= (LightKDTreeNode const &kdtn) |
Copy assignment operator for LightKDTreeNode. More... | |
LightKDTreeNode & | operator= (LightKDTreeNode &&kdtn) |
Move assignment operator for LightKDTreeNode. More... | |
void | swap (LightKDTreeNode &kdtn) |
Swap attributes of given LightKDTreeNode and current LightKDTreeNode. More... | |
LightKDTreeNode * | getLeftChild () const override |
LightKDTreeNode * | getRightChild () const override |
BinaryTreeDepthIterator< LightKDTreeNode > | buildDepthIterator (int const depth=0) |
Build a depth iterator starting at this node. More... | |
BinaryTreeFastDepthIterator< LightKDTreeNode > | buildFastDepthIterator () |
Build a fast depth iterator starting at this node. More... | |
BinaryTreeBreadthIterator< LightKDTreeNode > | buildBreadthIterator (int const depth=0) |
Build a breadth iterator starting at this node. More... | |
BinaryTreeFastBreadthIterator< LightKDTreeNode > | buildFastBreadthIterator () |
Build a fast breadth iterator starting at this node. More... | |
![]() | |
virtual bool | isLeafNode () const |
Check whether current node is a leaf node (true) or not (false) More... | |
Public Attributes | |
int | stats_maxNumPrimsInLeaf |
Maximum number of primitives considering all leaves. | |
int | stats_minNumPrimsInLeaf |
Minimum number of primitives considering all leaves. | |
int | stats_maxDepthReached |
Maximum depth of the KDTree. | |
int | stats_numInterior |
Number of interior nodes in the KDTree. | |
int | stats_numLeaves |
Number of leaf nodes in the KDTree. | |
double | stats_totalCost |
The total cost of the tree. It changes depending on tree building strategy. It might be NaN if tree building strategy is not based on computing any cost. | |
vector< LightKDTreeNode * > | blocks |
Vector of pointers to the start of each allocated block of LightKDTreeNode. If it is empty, it means the tree has not been lightened, thus its allocation is not block based.a. More... | |
vector< size_t > | blocksSize |
The size (number of nodes) for each allocated block, if any. More... | |
![]() | |
AABB | bound |
The axis-aligned boundary of the node. | |
double | surfaceArea = std::numeric_limits<double>::quiet_NaN() |
The summation of areas for all faces at node boundaries. | |
![]() | |
LightKDTreeNode * | left = nullptr |
Pointer to node at left side on space partition. Can be nullptr if there is no left side node. | |
LightKDTreeNode * | right = nullptr |
double | splitPos = 0 |
Point position at corresponding split axis. | |
int | splitAxis = 0 |
Space axis to consider at current depth. | |
std::shared_ptr< std::vector< Primitive * > > | primitives |
Vector of primitives associated with the node. | |
Private Member Functions | |
template<typename Archive > | |
void | serialize (Archive &ar, const unsigned int version) |
Serialize a KDTreeNodeRoot to a stream of bytes. More... | |
Friends | |
class | boost::serialization::access |
Additional Inherited Members | |
![]() | |
static KDTreeNode * | readObject (std::string path) |
Import a serialized KDTree from file. More... | |
Class representing the root node of a KDTree.
|
inlinevirtual |
Check whether the KDTree is dynamic (true) or not (false)
|
inlineprivate |
Serialize a KDTreeNodeRoot to a stream of bytes.
Archive | Type of rendering |
ar | Specific rendering for the stream of bytes |
version | Version number for the KDTreeNodeRoot |
vector<LightKDTreeNode *> KDTreeNodeRoot::blocks |
Vector of pointers to the start of each allocated block of LightKDTreeNode. If it is empty, it means the tree has not been lightened, thus its allocation is not block based.a.
vector<size_t> KDTreeNodeRoot::blocksSize |
The size (number of nodes) for each allocated block, if any.