Point Cloud Library (PCL)  1.8.1-dev
List of all members | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends
pcl::octree::OctreeBase< LeafContainerT, BranchContainerT > Class Template Reference

Octree class. More...

#include <pcl/octree/octree_base.h>

+ Inheritance diagram for pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >:

Public Types

typedef OctreeBase
< LeafContainerT,
BranchContainerT > 
OctreeT
 
typedef OctreeBranchNode
< BranchContainerT > 
BranchNode
 
typedef OctreeLeafNode
< LeafContainerT > 
LeafNode
 
typedef BranchContainerT BranchContainer
 
typedef LeafContainerT LeafContainer
 
typedef
OctreeDepthFirstIterator
< OctreeT
Iterator
 
typedef const
OctreeDepthFirstIterator
< OctreeT
ConstIterator
 
typedef OctreeLeafNodeIterator
< OctreeT
LeafNodeIterator
 
typedef const
OctreeLeafNodeIterator
< OctreeT
ConstLeafNodeIterator
 
typedef
OctreeDepthFirstIterator
< OctreeT
DepthFirstIterator
 
typedef const
OctreeDepthFirstIterator
< OctreeT
ConstDepthFirstIterator
 
typedef
OctreeBreadthFirstIterator
< OctreeT
BreadthFirstIterator
 
typedef const
OctreeBreadthFirstIterator
< OctreeT
ConstBreadthFirstIterator
 

Public Member Functions

Iterator begin (unsigned int max_depth_arg=0)
 
const Iterator end ()
 
LeafNodeIterator leaf_begin (unsigned int max_depth_arg=0)
 
const LeafNodeIterator leaf_end ()
 
DepthFirstIterator depth_begin (unsigned int max_depth_arg=0)
 
const DepthFirstIterator depth_end ()
 
BreadthFirstIterator breadth_begin (unsigned int max_depth_arg=0)
 
const BreadthFirstIterator breadth_end ()
 
 OctreeBase ()
 Empty constructor. More...
 
virtual ~OctreeBase ()
 Empty deconstructor. More...
 
 OctreeBase (const OctreeBase &source)
 Copy constructor. More...
 
OctreeBaseoperator= (const OctreeBase &source)
 Copy operator. More...
 
void setMaxVoxelIndex (unsigned int max_voxel_index_arg)
 Set the maximum amount of voxels per dimension. More...
 
void setTreeDepth (unsigned int max_depth_arg)
 Set the maximum depth of the octree. More...
 
unsigned int getTreeDepth () const
 Get the maximum depth of the octree. More...
 
LeafContainerT * createLeaf (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg)
 Create new leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
 
LeafContainerT * findLeaf (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg)
 Find leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
 
bool existLeaf (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg) const
 idx_x_arg for the existence of leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
 
void removeLeaf (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg)
 Remove leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
 
std::size_t getLeafCount () const
 Return the amount of existing leafs in the octree. More...
 
std::size_t getBranchCount () const
 Return the amount of existing branch nodes in the octree. More...
 
void deleteTree ()
 Delete the octree structure and its leaf nodes. More...
 
void serializeTree (std::vector< char > &binary_tree_out_arg)
 Serialize octree into a binary output vector describing its branch node structure. More...
 
void serializeTree (std::vector< char > &binary_tree_out_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg)
 Serialize octree into a binary output vector describing its branch node structure and push all LeafContainerT elements stored in the octree to a vector. More...
 
void serializeLeafs (std::vector< LeafContainerT * > &leaf_container_vector_arg)
 Outputs a vector of all LeafContainerT elements that are stored within the octree leaf nodes. More...
 
void deserializeTree (std::vector< char > &binary_tree_input_arg)
 Deserialize a binary octree description vector and create a corresponding octree structure. More...
 
void deserializeTree (std::vector< char > &binary_tree_input_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg)
 Deserialize a binary octree description and create a corresponding octree structure. More...
 

Protected Member Functions

LeafContainerT * createLeaf (const OctreeKey &key_arg)
 Create a leaf node. More...
 
LeafContainerT * findLeaf (const OctreeKey &key_arg) const
 Find leaf node. More...
 
bool existLeaf (const OctreeKey &key_arg) const
 Check for existance of a leaf node in the octree. More...
 
void removeLeaf (const OctreeKey &key_arg)
 Remove leaf node from octree. More...
 
OctreeNodegetRootNode () const
 Retrieve root node. More...
 
bool branchHasChild (const BranchNode &branch_arg, unsigned char child_idx_arg) const
 Check if branch is pointing to a particular child node. More...
 
OctreeNodegetBranchChildPtr (const BranchNode &branch_arg, unsigned char child_idx_arg) const
 Retrieve a child node pointer for child node at child_idx. More...
 
void setBranchChildPtr (BranchNode &branch_arg, unsigned char child_idx_arg, OctreeNode *new_child_arg)
 Assign new child node to branch. More...
 
char getBranchBitPattern (const BranchNode &branch_arg) const
 Generate bit pattern reflecting the existence of child node pointers. More...
 
void deleteBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
 Delete child node and all its subchilds from octree. More...
 
void deleteBranch (BranchNode &branch_arg)
 Delete branch and all its subchilds from octree. More...
 
BranchNodecreateBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
 Create and add a new branch child to a branch class. More...
 
LeafNodecreateLeafChild (BranchNode &branch_arg, unsigned char child_idx_arg)
 Create and add a new leaf child to a branch class. More...
 
unsigned int createLeafRecursive (const OctreeKey &key_arg, unsigned int depth_mask_arg, BranchNode *branch_arg, LeafNode *&return_leaf_arg, BranchNode *&parent_of_leaf_arg)
 Create a leaf node at octree key. More...
 
void findLeafRecursive (const OctreeKey &key_arg, unsigned int depth_mask_arg, BranchNode *branch_arg, LeafContainerT *&result_arg) const
 Recursively search for a given leaf node and return a pointer. More...
 
bool deleteLeafRecursive (const OctreeKey &key_arg, unsigned int depth_mask_arg, BranchNode *branch_arg)
 Recursively search and delete leaf node. More...
 
void serializeTreeRecursive (const BranchNode *branch_arg, OctreeKey &key_arg, std::vector< char > *binary_tree_out_arg, typename std::vector< LeafContainerT * > *leaf_container_vector_arg) const
 Recursively explore the octree and output binary octree description together with a vector of leaf node LeafContainerTs. More...
 
void deserializeTreeRecursive (BranchNode *branch_arg, unsigned int depth_mask_arg, OctreeKey &key_arg, typename std::vector< char >::const_iterator &binary_tree_input_it_arg, typename std::vector< char >::const_iterator &binary_tree_input_it_end_arg, typename std::vector< LeafContainerT * >::const_iterator *leaf_container_vector_it_arg, typename std::vector< LeafContainerT * >::const_iterator *leaf_container_vector_it_end_arg)
 Recursive method for deserializing octree structure. More...
 
virtual void serializeTreeCallback (LeafContainerT &, const OctreeKey &) const
 Callback executed for every leaf node during serialization. More...
 
virtual void deserializeTreeCallback (LeafContainerT &, const OctreeKey &)
 Callback executed for every leaf node during deserialization. More...
 
double Log2 (double n_arg)
 Helper function to calculate the binary logarithm. More...
 
bool octreeCanResize ()
 Test if octree is able to dynamically change its depth. More...
 

Protected Attributes

std::size_t leaf_count_
 Amount of leaf nodes. More...
 
std::size_t branch_count_
 Amount of branch nodes. More...
 
BranchNoderoot_node_
 Pointer to root branch node of octree. More...
 
unsigned int depth_mask_
 Depth mask based on octree depth. More...
 
unsigned int octree_depth_
 Octree depth. More...
 
bool dynamic_depth_enabled_
 Enable dynamic_depth. More...
 
OctreeKey max_key_
 key range More...
 

Friends

class OctreeIteratorBase< OctreeT >
 
class OctreeDepthFirstIterator< OctreeT >
 
class OctreeBreadthFirstIterator< OctreeT >
 
class OctreeLeafNodeIterator< OctreeT >
 

Detailed Description

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
class pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >

Octree class.

Note
The tree depth defines the maximum amount of octree voxels / leaf nodes (should be initially defined).
All leaf nodes are addressed by integer indices.
Note: The tree depth equates to the bit length of the voxel indices.
Author
Julius Kammerl (juliu.nosp@m.s@ka.nosp@m.mmerl.nosp@m..de)

Definition at line 62 of file octree_base.h.

Member Typedef Documentation

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef BranchContainerT pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::BranchContainer

Definition at line 72 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef OctreeBranchNode<BranchContainerT> pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::BranchNode

Definition at line 69 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef OctreeBreadthFirstIterator<OctreeT> pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::BreadthFirstIterator

Definition at line 97 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef const OctreeBreadthFirstIterator<OctreeT> pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::ConstBreadthFirstIterator

Definition at line 101 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef const OctreeDepthFirstIterator<OctreeT> pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::ConstDepthFirstIterator

Definition at line 95 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef const OctreeDepthFirstIterator<OctreeT> pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::ConstIterator

Definition at line 83 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef const OctreeLeafNodeIterator<OctreeT> pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::ConstLeafNodeIterator

Definition at line 89 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef OctreeDepthFirstIterator<OctreeT> pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::DepthFirstIterator

Definition at line 91 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef OctreeDepthFirstIterator<OctreeT> pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::Iterator

Definition at line 82 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef LeafContainerT pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::LeafContainer

Definition at line 73 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef OctreeLeafNode<LeafContainerT> pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::LeafNode

Definition at line 70 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef OctreeLeafNodeIterator<OctreeT> pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::LeafNodeIterator

Definition at line 85 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
typedef OctreeBase<LeafContainerT, BranchContainerT> pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::OctreeT

Definition at line 67 of file octree_base.h.

Constructor & Destructor Documentation

template<typename LeafContainerT , typename BranchContainerT >
pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::OctreeBase ( )

Empty constructor.

Definition at line 52 of file octree_base.hpp.

template<typename LeafContainerT , typename BranchContainerT >
pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::~OctreeBase ( )
virtual

Empty deconstructor.

Definition at line 65 of file octree_base.hpp.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::OctreeBase ( const OctreeBase< LeafContainerT, BranchContainerT > &  source)
inline

Copy constructor.

Definition at line 114 of file octree_base.h.

Member Function Documentation

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
Iterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::begin ( unsigned int  max_depth_arg = 0)
inline

Definition at line 84 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::branchHasChild ( const BranchNode branch_arg,
unsigned char  child_idx_arg 
) const
inlineprotected

Check if branch is pointing to a particular child node.

Parameters
branch_argreference to octree branch class
child_idx_argindex to child node
Returns
"true" if pointer to child node exists; "false" otherwise

Definition at line 324 of file octree_base.h.

References pcl::octree::OctreeBranchNode< ContainerT >::getChildPtr().

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
BreadthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::breadth_begin ( unsigned int  max_depth_arg = 0)
inline

Definition at line 102 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
const BreadthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::breadth_end ( )
inline

Definition at line 103 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
BranchNode* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::createBranchChild ( BranchNode branch_arg,
unsigned char  child_idx_arg 
)
inlineprotected

Create and add a new branch child to a branch class.

Parameters
branch_argreference to octree branch class
child_idx_argindex to child node
Returns
pointer of new branch child to this reference

Definition at line 430 of file octree_base.h.

template<typename LeafContainerT , typename BranchContainerT >
LeafContainerT * pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::createLeaf ( unsigned int  idx_x_arg,
unsigned int  idx_y_arg,
unsigned int  idx_z_arg 
)

Create new leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).

Note
If leaf node already exist, this method returns the existing node
Parameters
idx_x_argindex of leaf node in the X axis.
idx_y_argindex of leaf node in the Y axis.
idx_z_argindex of leaf node in the Z axis.
Returns
pointer to new leaf node container.

Definition at line 122 of file octree_base.hpp.

Referenced by pcl::octree::OctreePointCloudOccupancy< PointT, LeafContainerT, BranchContainerT >::setOccupiedVoxelAtPoint().

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
LeafContainerT* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::createLeaf ( const OctreeKey key_arg)
inlineprotected
template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
LeafNode* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::createLeafChild ( BranchNode branch_arg,
unsigned char  child_idx_arg 
)
inlineprotected

Create and add a new leaf child to a branch class.

Parameters
branch_argreference to octree branch class
child_idx_argindex to child node
Returns
pointer of new leaf child to this reference

Definition at line 445 of file octree_base.h.

template<typename LeafContainerT , typename BranchContainerT >
unsigned int pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::createLeafRecursive ( const OctreeKey key_arg,
unsigned int  depth_mask_arg,
BranchNode branch_arg,
LeafNode *&  return_leaf_arg,
BranchNode *&  parent_of_leaf_arg 
)
protected

Create a leaf node at octree key.

If leaf node does already exist, it is returned.

Parameters
key_argreference to an octree key
depth_mask_argdepth mask used for octree key analysis and for branch depth indicator
branch_argcurrent branch node
return_leaf_argreturn pointer to leaf node
parent_of_leaf_argreturn pointer to parent of leaf node
Returns
depth mask at which leaf node was created

Definition at line 284 of file octree_base.hpp.

References pcl::octree::BRANCH_NODE, pcl::octree::OctreeKey::getChildIdxWithDepthMask(), pcl::octree::OctreeNode::getNodeType(), and pcl::octree::LEAF_NODE.

Referenced by pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::createLeaf().

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteBranch ( BranchNode branch_arg)
inlineprotected

Delete branch and all its subchilds from octree.

Parameters
branch_argreference to octree branch class

Definition at line 416 of file octree_base.h.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteBranchChild().

Referenced by pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteBranchChild().

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteBranchChild ( BranchNode branch_arg,
unsigned char  child_idx_arg 
)
inlineprotected

Delete child node and all its subchilds from octree.

Parameters
branch_argreference to octree branch class
child_idx_argindex to child node

Definition at line 380 of file octree_base.h.

References pcl::octree::BRANCH_NODE, pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteBranch(), pcl::octree::OctreeNode::getNodeType(), pcl::octree::OctreeBranchNode< ContainerT >::hasChild(), and pcl::octree::LEAF_NODE.

Referenced by pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteBranch().

template<typename LeafContainerT , typename BranchContainerT >
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteLeafRecursive ( const OctreeKey key_arg,
unsigned int  depth_mask_arg,
BranchNode branch_arg 
)
protected

Recursively search and delete leaf node.

Parameters
key_argreference to an octree key
depth_mask_argdepth mask used for octree key analysis and branch depth indicator
branch_argcurrent branch node
Returns
"true" if branch does not contain any childs; "false" otherwise. This indicates if current branch can be deleted, too.

Definition at line 384 of file octree_base.hpp.

References pcl::octree::BRANCH_NODE, pcl::octree::OctreeKey::getChildIdxWithDepthMask(), pcl::octree::OctreeNode::getNodeType(), pcl::octree::OctreeBranchNode< ContainerT >::hasChild(), and pcl::octree::LEAF_NODE.

Referenced by pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::removeLeaf().

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteTree ( )

Delete the octree structure and its leaf nodes.

Definition at line 164 of file octree_base.hpp.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
DepthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::depth_begin ( unsigned int  max_depth_arg = 0)
inline

Definition at line 96 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
const DepthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::depth_end ( )
inline

Definition at line 97 of file octree_base.h.

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deserializeTree ( std::vector< char > &  binary_tree_input_arg)

Deserialize a binary octree description vector and create a corresponding octree structure.

Leaf nodes are initialized with getDataTByKey(..).

Parameters
binary_tree_input_argreference to input vector for reading binary tree structure.

Definition at line 229 of file octree_base.hpp.

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deserializeTree ( std::vector< char > &  binary_tree_input_arg,
std::vector< LeafContainerT * > &  leaf_container_vector_arg 
)

Deserialize a binary octree description and create a corresponding octree structure.

Leaf nodes are initialized with LeafContainerT elements from the dataVector.

Parameters
binary_tree_input_argreference to input vector for reading binary tree structure.
leaf_container_vector_argpointer to container vector.

Definition at line 253 of file octree_base.hpp.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
virtual void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deserializeTreeCallback ( LeafContainerT &  ,
const OctreeKey  
)
inlineprotectedvirtual

Callback executed for every leaf node during deserialization.

Definition at line 540 of file octree_base.h.

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deserializeTreeRecursive ( BranchNode branch_arg,
unsigned int  depth_mask_arg,
OctreeKey key_arg,
typename std::vector< char >::const_iterator &  binary_tree_input_it_arg,
typename std::vector< char >::const_iterator &  binary_tree_input_it_end_arg,
typename std::vector< LeafContainerT * >::const_iterator *  leaf_container_vector_it_arg,
typename std::vector< LeafContainerT * >::const_iterator *  leaf_container_vector_it_end_arg 
)
protected

Recursive method for deserializing octree structure.

Parameters
branch_argcurrent branch node
depth_mask_argdepth mask used for octree key analysis and branch depth indicator
key_argreference to an octree key
binary_tree_input_it_argiterator to binary input vector
binary_tree_input_it_end_argend iterator of binary input vector
leaf_container_vector_it_argiterator pointing to current LeafContainerT object to be added to a leaf node
leaf_container_vector_it_end_argiterator pointing to last object in LeafContainerT input vector.

Definition at line 503 of file octree_base.hpp.

References pcl::octree::OctreeKey::popBranch(), and pcl::octree::OctreeKey::pushBranch().

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
const Iterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::end ( )
inline

Definition at line 85 of file octree_base.h.

template<typename LeafContainerT , typename BranchContainerT >
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::existLeaf ( unsigned int  idx_x_arg,
unsigned int  idx_y_arg,
unsigned int  idx_z_arg 
) const

idx_x_arg for the existence of leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).

Parameters
idx_x_argindex of leaf node in the X axis.
idx_y_argindex of leaf node in the Y axis.
idx_z_argindex of leaf node in the Z axis.
Returns
"true" if leaf node search is successful, otherwise it returns "false".

Definition at line 136 of file octree_base.hpp.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::existLeaf ( const OctreeKey key_arg) const
inlineprotected

Check for existance of a leaf node in the octree.

Parameters
key_argoctree key addressing a leaf node.
Returns
"true" if leaf node is found; "false" otherwise

Definition at line 292 of file octree_base.h.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::findLeaf().

template<typename LeafContainerT , typename BranchContainerT >
LeafContainerT * pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::findLeaf ( unsigned int  idx_x_arg,
unsigned int  idx_y_arg,
unsigned int  idx_z_arg 
)

Find leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).

Note
If leaf node already exist, this method returns the existing node
Parameters
idx_x_argindex of leaf node in the X axis.
idx_y_argindex of leaf node in the Y axis.
idx_z_argindex of leaf node in the Z axis.
Returns
pointer to leaf node container if found, null pointer otherwise.

Definition at line 108 of file octree_base.hpp.

Referenced by pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::existLeaf().

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
LeafContainerT* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::findLeaf ( const OctreeKey key_arg) const
inlineprotected

Find leaf node.

Parameters
key_argoctree key addressing a leaf node.
Returns
pointer to leaf node. If leaf node is not found, this pointer returns 0.

Definition at line 280 of file octree_base.h.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::depth_mask_, pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::findLeafRecursive(), and pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::root_node_.

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::findLeafRecursive ( const OctreeKey key_arg,
unsigned int  depth_mask_arg,
BranchNode branch_arg,
LeafContainerT *&  result_arg 
) const
protected

Recursively search for a given leaf node and return a pointer.

Note
If leaf node does not exist, a 0 pointer is returned.
Parameters
key_argreference to an octree key
depth_mask_argdepth mask used for octree key analysis and for branch depth indicator
branch_argcurrent branch node
result_argpointer to leaf node class

Definition at line 345 of file octree_base.hpp.

References pcl::octree::BRANCH_NODE, pcl::octree::OctreeKey::getChildIdxWithDepthMask(), pcl::octree::OctreeLeafNode< ContainerT >::getContainerPtr(), pcl::octree::OctreeNode::getNodeType(), and pcl::octree::LEAF_NODE.

Referenced by pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::findLeaf().

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
char pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getBranchBitPattern ( const BranchNode branch_arg) const
inlineprotected

Generate bit pattern reflecting the existence of child node pointers.

Parameters
branch_argreference to octree branch class
Returns
a single byte with 8 bits of child node information

Definition at line 360 of file octree_base.h.

References pcl::octree::OctreeBranchNode< ContainerT >::getChildPtr().

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
OctreeNode* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getBranchChildPtr ( const BranchNode branch_arg,
unsigned char  child_idx_arg 
) const
inlineprotected

Retrieve a child node pointer for child node at child_idx.

Parameters
branch_argreference to octree branch class
child_idx_argindex to child node
Returns
pointer to octree child node class

Definition at line 337 of file octree_base.h.

References pcl::octree::OctreeBranchNode< ContainerT >::getChildPtr().

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
std::size_t pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getBranchCount ( ) const
inline

Return the amount of existing branch nodes in the octree.

Returns
amount of branch nodes.

Definition at line 209 of file octree_base.h.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::branch_count_.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
std::size_t pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getLeafCount ( ) const
inline

Return the amount of existing leafs in the octree.

Returns
amount of registered leaf nodes.

Definition at line 200 of file octree_base.h.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::leaf_count_.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
OctreeNode* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getRootNode ( ) const
inlineprotected

Retrieve root node.

Definition at line 313 of file octree_base.h.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::root_node_.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
unsigned int pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getTreeDepth ( ) const
inline

Get the maximum depth of the octree.

Returns
depth_arg: maximum depth of octree

Definition at line 154 of file octree_base.h.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::octree_depth_.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
LeafNodeIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::leaf_begin ( unsigned int  max_depth_arg = 0)
inline

Definition at line 90 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
const LeafNodeIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::leaf_end ( )
inline

Definition at line 91 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
double pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::Log2 ( double  n_arg)
inlineprotected

Helper function to calculate the binary logarithm.

Parameters
n_argsome value
Returns
binary logarithm (log2) of argument n_arg

Definition at line 554 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::octreeCanResize ( )
inlineprotected

Test if octree is able to dynamically change its depth.

This is required for adaptive bounding box adjustment.

Returns
"true"

Definition at line 563 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
OctreeBase& pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::operator= ( const OctreeBase< LeafContainerT, BranchContainerT > &  source)
inline
template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::removeLeaf ( unsigned int  idx_x_arg,
unsigned int  idx_y_arg,
unsigned int  idx_z_arg 
)

Remove leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).

Parameters
idx_x_argindex of leaf node in the X axis.
idx_y_argindex of leaf node in the Y axis.
idx_z_argindex of leaf node in the Z axis.

Definition at line 150 of file octree_base.hpp.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::removeLeaf ( const OctreeKey key_arg)
inlineprotected
template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::serializeLeafs ( std::vector< LeafContainerT * > &  leaf_container_vector_arg)

Outputs a vector of all LeafContainerT elements that are stored within the octree leaf nodes.

Parameters
leaf_container_vector_argpointers to LeafContainerT vector that receives a copy of all LeafContainerT objects in the octree.

Definition at line 214 of file octree_base.hpp.

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::serializeTree ( std::vector< char > &  binary_tree_out_arg)

Serialize octree into a binary output vector describing its branch node structure.

Parameters
binary_tree_out_argreference to output vector for writing binary tree structure.

Definition at line 180 of file octree_base.hpp.

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::serializeTree ( std::vector< char > &  binary_tree_out_arg,
std::vector< LeafContainerT * > &  leaf_container_vector_arg 
)

Serialize octree into a binary output vector describing its branch node structure and push all LeafContainerT elements stored in the octree to a vector.

Parameters
binary_tree_out_argreference to output vector for writing binary tree structure.
leaf_container_vector_argpointer to all LeafContainerT objects in the octree

Definition at line 195 of file octree_base.hpp.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
virtual void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::serializeTreeCallback ( LeafContainerT &  ,
const OctreeKey  
) const
inlineprotectedvirtual

Callback executed for every leaf node during serialization.

Definition at line 532 of file octree_base.h.

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::serializeTreeRecursive ( const BranchNode branch_arg,
OctreeKey key_arg,
std::vector< char > *  binary_tree_out_arg,
typename std::vector< LeafContainerT * > *  leaf_container_vector_arg 
) const
protected

Recursively explore the octree and output binary octree description together with a vector of leaf node LeafContainerTs.

Parameters
branch_argcurrent branch node
key_argreference to an octree key
binary_tree_out_argbinary output vector
leaf_container_vector_argwrites LeafContainerT pointers to this LeafContainerT* vector.

Definition at line 441 of file octree_base.hpp.

References pcl::octree::BRANCH_NODE, pcl::octree::OctreeBranchNode< ContainerT >::getChildPtr(), pcl::octree::OctreeLeafNode< ContainerT >::getContainerPtr(), pcl::octree::OctreeNode::getNodeType(), pcl::octree::OctreeBranchNode< ContainerT >::hasChild(), pcl::octree::LEAF_NODE, pcl::octree::OctreeKey::popBranch(), and pcl::octree::OctreeKey::pushBranch().

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::setBranchChildPtr ( BranchNode branch_arg,
unsigned char  child_idx_arg,
OctreeNode new_child_arg 
)
inlineprotected

Assign new child node to branch.

Parameters
branch_argreference to octree branch class
child_idx_argindex to child node
new_child_argpointer to new child node

Definition at line 348 of file octree_base.h.

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::setMaxVoxelIndex ( unsigned int  max_voxel_index_arg)

Set the maximum amount of voxels per dimension.

Parameters
[in]max_voxel_index_argmaximum amount of voxels per dimension

Definition at line 75 of file octree_base.hpp.

References pcl::octree::OctreeKey::maxDepth.

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::setTreeDepth ( unsigned int  max_depth_arg)

Set the maximum depth of the octree.

Parameters
max_depth_argmaximum depth of octree

Definition at line 91 of file octree_base.hpp.

Friends And Related Function Documentation

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
friend class OctreeBreadthFirstIterator< OctreeT >
friend

Definition at line 78 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
friend class OctreeDepthFirstIterator< OctreeT >
friend

Definition at line 77 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
friend class OctreeIteratorBase< OctreeT >
friend

Definition at line 76 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
friend class OctreeLeafNodeIterator< OctreeT >
friend

Definition at line 79 of file octree_base.h.

Member Data Documentation

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
std::size_t pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::branch_count_
protected
template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
unsigned int pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::depth_mask_
protected
template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::dynamic_depth_enabled_
protected

Enable dynamic_depth.

Definition at line 588 of file octree_base.h.

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
std::size_t pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::leaf_count_
protected
template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
OctreeKey pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::max_key_
protected
template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
unsigned int pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::octree_depth_
protected
template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>
BranchNode* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::root_node_
protected

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