Helios++
Helios software for LiDAR simulations
KDTreeNode Class Reference

Class representing a KDTree node. More...

#include <KDTreeNode.h>

Inheritance diagram for KDTreeNode:
Collaboration diagram for KDTreeNode:

Public Member Functions

 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.
 
KDTreeNodeoperator= (KDTreeNode const &kdtn)
 Copy assignment operator for KDTreeNode. More...
 
KDTreeNodeoperator= (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...
 
- Public Member Functions inherited from LightKDTreeNode
 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.
 
LightKDTreeNodeoperator= (LightKDTreeNode const &kdtn)
 Copy assignment operator for LightKDTreeNode. More...
 
LightKDTreeNodeoperator= (LightKDTreeNode &&kdtn)
 Move assignment operator for LightKDTreeNode. More...
 
void swap (LightKDTreeNode &kdtn)
 Swap attributes of given LightKDTreeNode and current LightKDTreeNode. More...
 
LightKDTreeNodegetLeftChild () const override
 
LightKDTreeNodegetRightChild () const override
 
BinaryTreeDepthIterator< LightKDTreeNodebuildDepthIterator (int const depth=0)
 Build a depth iterator starting at this node. More...
 
BinaryTreeFastDepthIterator< LightKDTreeNodebuildFastDepthIterator ()
 Build a fast depth iterator starting at this node. More...
 
BinaryTreeBreadthIterator< LightKDTreeNodebuildBreadthIterator (int const depth=0)
 Build a breadth iterator starting at this node. More...
 
BinaryTreeFastBreadthIterator< LightKDTreeNodebuildFastBreadthIterator ()
 Build a fast breadth iterator starting at this node. More...
 
- Public Member Functions inherited from IBinaryTreeNode
virtual bool isLeafNode () const
 Check whether current node is a leaf node (true) or not (false) More...
 

Static Public Member Functions

static KDTreeNodereadObject (std::string path)
 Import a serialized KDTree from file. More...
 

Public Attributes

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.
 
- Public Attributes inherited from LightKDTreeNode
LightKDTreeNodeleft = nullptr
 Pointer to node at left side on space partition. Can be nullptr if there is no left side node.
 
LightKDTreeNoderight = 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<class Archive >
void serialize (Archive &ar, const unsigned int version)
 Serialize a KDTreeNode to a stream of bytes. More...
 

Friends

class boost::serialization::access
 

Detailed Description

Class representing a KDTree node.

Constructor & Destructor Documentation

◆ KDTreeNode() [1/2]

KDTreeNode::KDTreeNode ( KDTreeNode const &  kdtn)

Copy constructor for KDTreeNode.

Parameters
kdtnKDTreeNode to be copy-constructed

◆ KDTreeNode() [2/2]

KDTreeNode::KDTreeNode ( KDTreeNode &&  kdtn)

Move constructor for KDTreeNode.

Parameters
kdtnKDTreeNode to be move-constructed

Member Function Documentation

◆ operator=() [1/2]

KDTreeNode & KDTreeNode::operator= ( KDTreeNode &&  kdtn)

Move assignment operator for KDTreeNode.

Parameters
kdtnKDTreeNode to be move-assigned
Returns
Reference to moved KDTreeNode

◆ operator=() [2/2]

KDTreeNode & KDTreeNode::operator= ( KDTreeNode const &  kdtn)

Copy assignment operator for KDTreeNode.

Parameters
kdtnKDTreeNode to be copy-assigned
Returns
Reference to copied KDTreeNode

◆ readObject()

KDTreeNode * KDTreeNode::readObject ( std::string  path)
static

Import a serialized KDTree from file.

Parameters
pathPath to the file containing a serialized KDTree
Returns
Imported KDTree

◆ serialize()

template<class Archive >
void KDTreeNode::serialize ( Archive &  ar,
const unsigned int  version 
)
inlineprivate

Serialize a KDTreeNode to a stream of bytes.

Template Parameters
ArchiveType of rendering
Parameters
arSpecific rendering for the stream of bytes
versionVersion number for the KDTreeNode

◆ swap()

void KDTreeNode::swap ( KDTreeNode kdtn)

Swap attributes of given KDTreeNode and current KDTreeNode.

Parameters
kdtnKDTreeNode to swap attributes with

◆ writeObject()

void KDTreeNode::writeObject ( std::string  path)

Serialize KDTree.

Parameters
pathPath to file where the serialized KDTree must be exported

The documentation for this class was generated from the following files: