pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT > Class Template Reference
Module octree

Octree double buffer class More...

`#include <pcl/octree/octree2buf_base.h>`

Inheritance diagram for pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >:

## Public Types

using | OctreeT = Octree2BufBase< LeafContainerT, BranchContainerT >
using | BranchNode = BufferedBranchNode< BranchContainerT >
using | LeafNode = OctreeLeafNode< LeafContainerT >
using | BranchContainer = BranchContainerT
using | LeafContainer = LeafContainerT
using | Iterator = OctreeDepthFirstIterator< OctreeT >
using | ConstIterator = const OctreeDepthFirstIterator< OctreeT >
using | LeafNodeIterator = OctreeLeafNodeDepthFirstIterator< OctreeT >
using | ConstLeafNodeIterator = const OctreeLeafNodeDepthFirstIterator< OctreeT >
using | LeafNodeDepthFirstIterator = OctreeLeafNodeDepthFirstIterator< OctreeT >
using | ConstLeafNodeDepthFirstIterator = const OctreeLeafNodeDepthFirstIterator< OctreeT >
using | DepthFirstIterator = OctreeDepthFirstIterator< OctreeT >
using | ConstDepthFirstIterator = const OctreeDepthFirstIterator< OctreeT >
using | BreadthFirstIterator = OctreeBreadthFirstIterator< OctreeT >
using | ConstBreadthFirstIterator = const OctreeBreadthFirstIterator< OctreeT >
using | LeafNodeBreadthIterator = OctreeLeafNodeBreadthFirstIterator< OctreeT >
using | ConstLeafNodeBreadthIterator = const OctreeLeafNodeBreadthFirstIterator< OctreeT >

## 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 ()
LeafNodeDepthFirstIterator | leaf_depth_begin (unsigned int max_depth_arg=0)
const LeafNodeDepthFirstIterator | leaf_depth_end ()
DepthFirstIterator | depth_begin (unsigned int maxDepth_arg=0)
const DepthFirstIterator | depth_end ()
BreadthFirstIterator | breadth_begin (unsigned int max_depth_arg=0)
const BreadthFirstIterator | breadth_end ()
LeafNodeBreadthIterator | leaf_breadth_begin (unsigned int max_depth_arg=0u)
const LeafNodeBreadthIterator | leaf_breadth_end ()
| Octree2BufBase ()
| Empty constructor. More...
virtual | ~Octree2BufBase ()
| Empty deconstructor. More...
| Octree2BufBase (const Octree2BufBase &source)
| Copy constructor. More...
Octree2BufBase & | operator= (const Octree2BufBase &source)
| Copy constructor. More...
void | setMaxVoxelIndex (unsigned int max_voxel_index_arg)
| Set the maximum amount of voxels per dimension. More...
void | setTreeDepth (unsigned int 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
| Check 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 branches in the octree. More...
void | deleteTree ()
| Delete the octree structure and its leaf nodes. More...
void | deletePreviousBuffer ()
| Delete octree structure of previous buffer. More...
void | deleteCurrentBuffer ()
| Delete the octree structure in the current buffer. More...
void | switchBuffers ()
| Switch buffers and reset current octree structure. More...
void | serializeTree (std::vector< char > &binary_tree_out_arg, bool do_XOR_encoding_arg=false)
| 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, bool do_XOR_encoding_arg=false)
| Serialize octree into a binary output vector describing its branch node structure and and push all DataT elements stored in the octree to a vector. More...
void | serializeLeafs (std::vector< LeafContainerT * > &leaf_container_vector_arg)
| Outputs a vector of all DataT elements that are stored within the octree leaf nodes. More...
void | serializeNewLeafs (std::vector< LeafContainerT * > &leaf_container_vector_arg)
| Outputs a vector of all DataT elements from leaf nodes, that do not exist in the previous octree buffer. More...
void | deserializeTree (std::vector< char > &binary_tree_in_arg, bool do_XOR_decoding_arg=false)
| Deserialize a binary octree description vector and create a corresponding octree structure. More...
void | deserializeTree (std::vector< char > &binary_tree_in_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg, bool do_XOR_decoding_arg=false)
| Deserialize a binary octree description and create a corresponding octree structure. More...

## Protected Member Functions

OctreeNode * | getRootNode () const
| Retrieve root node. More...
LeafContainerT * | findLeaf (const OctreeKey &key_arg) const
| Find leaf node. More...
LeafContainerT * | createLeaf (const OctreeKey &key_arg)
| Create a leaf node. More...
bool | existLeaf (const OctreeKey &key_arg) const
| Check if leaf doesn't exist in the octree. More...
void | removeLeaf (const OctreeKey &key_arg)
| Remove leaf node from octree. More...
bool | branchHasChild (const BranchNode &branch_arg, unsigned char child_idx_arg) const
| Check if branch is pointing to a particular child node. More...
OctreeNode * | getBranchChildPtr (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 for current buffer. More...
char | getBranchBitPattern (const BranchNode &branch_arg, unsigned char bufferSelector_arg) const
| Generate bit pattern reflecting the existence of child node pointers in specific buffer. More...
char | getBranchXORBitPattern (const BranchNode &branch_arg) const
| Generate XOR bit pattern reflecting differences between the two octree buffers. More...
bool | hasBranchChanges (const BranchNode &branch_arg) const
| Test if branch changed between previous and current buffer. More...
void | deleteBranchChild (BranchNode &branch_arg, unsigned char buffer_selector_arg, unsigned char child_idx_arg)
| Delete child node and all its subchilds from octree in specific buffer. More...
void | deleteBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
| Delete child node and all its subchilds from octree in current buffer. More...
void | deleteBranch (BranchNode &branch_arg)
| Delete branch and all its subchilds from octree (both buffers) More...
BranchNode * | createBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
| Fetch and add a new branch child to a branch class in current buffer. More...
LeafNode * | createLeafChild (BranchNode &branch_arg, unsigned char child_idx_arg)
| Fetch 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, bool branch_reset_arg=false)
| 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 (BranchNode *branch_arg, OctreeKey &key_arg, std::vector< char > *binary_tree_out_arg, typename std::vector< LeafContainerT * > *leaf_container_vector_arg, bool do_XOR_encoding_arg=false, bool new_leafs_filter_arg=false)
| Recursively explore the octree and output binary octree description together with a vector of leaf node DataT content. More...

void

deserializeTreeRecursive (BranchNode *branch_arg, unsigned int depth_mask_arg, OctreeKey &key_arg, typename std::vector< char >::const_iterator &binary_tree_in_it_arg, typename std::vector< char >::const_iterator &binary_tree_in_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, bool branch_reset_arg=false, bool do_XOR_decoding_arg=false)

| Rebuild an octree based on binary XOR octree description and DataT objects for leaf node initialization. More...
virtual void | serializeTreeCallback (LeafContainerT &, const OctreeKey &)
| Callback executed for every leaf node data during serialization. More...
virtual void | deserializeTreeCallback (LeafContainerT &, const OctreeKey &)
| Callback executed for every leaf node data during deserialization. More...
void | treeCleanUpRecursive (BranchNode *branch_arg)
| Recursively explore the octree and remove unused branch and leaf nodes. 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...
void | printBinary (char data_arg)
| Prints binary representation of a byte - used for debugging. More...

## Protected Attributes

std::size_t | leaf_count_
| Amount of leaf nodes More...
std::size_t | branch_count_
| Amount of branch nodes More...
BranchNode * | root_node_
| Pointer to root branch node of octree More...
unsigned int | depth_mask_
| Depth mask based on octree depth More...
OctreeKey | max_key_
| key range More...
unsigned char | buffer_selector_
| Currently active octree buffer More...
bool | tree_dirty_flag_
unsigned int | octree_depth_
| Octree depth. More...
bool | dynamic_depth_enabled_
| Enable dynamic_depth. More...

## Friends

class | OctreeIteratorBase< OctreeT >
class | OctreeDepthFirstIterator< OctreeT >
class | OctreeBreadthFirstIterator< OctreeT >
class | OctreeLeafNodeDepthFirstIterator< OctreeT >
class | OctreeLeafNodeBreadthFirstIterator< OctreeT >

## Detailed Description

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

Octree double buffer class

Note
  This octree implementation keeps two separate octree structures in memory.
  This allows for differentially compare the octree structures (change detection, differential encoding).
  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 221 of file octree2buf_base.h.

## Member Typedef Documentation

## BranchContainer

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::BranchContainer = BranchContainerT

Definition at line 238 of file octree2buf_base.h.

## BranchNode

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::BranchNode = BufferedBranchNode<BranchContainerT>

Definition at line 235 of file octree2buf_base.h.

## BreadthFirstIterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::BreadthFirstIterator = OctreeBreadthFirstIterator<OctreeT>

Definition at line 286 of file octree2buf_base.h.

## ConstBreadthFirstIterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstBreadthFirstIterator = const OctreeBreadthFirstIterator<OctreeT>

Definition at line 287 of file octree2buf_base.h.

## ConstDepthFirstIterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstDepthFirstIterator = const OctreeDepthFirstIterator<OctreeT>

Definition at line 281 of file octree2buf_base.h.

## ConstIterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstIterator = const OctreeDepthFirstIterator<OctreeT>

Definition at line 243 of file octree2buf_base.h.

## ConstLeafNodeBreadthIterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstLeafNodeBreadthIterator = const OctreeLeafNodeBreadthFirstIterator<OctreeT>

Definition at line 293 of file octree2buf_base.h.

## ConstLeafNodeDepthFirstIterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstLeafNodeDepthFirstIterator = const OctreeLeafNodeDepthFirstIterator<OctreeT>

Definition at line 268 of file octree2buf_base.h.

## ConstLeafNodeIterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstLeafNodeIterator = const OctreeLeafNodeDepthFirstIterator<OctreeT>

Definition at line 252 of file octree2buf_base.h.

## DepthFirstIterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::DepthFirstIterator = OctreeDepthFirstIterator<OctreeT>

Definition at line 280 of file octree2buf_base.h.

## Iterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::Iterator = OctreeDepthFirstIterator<OctreeT>

Definition at line 242 of file octree2buf_base.h.

## LeafContainer

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafContainer = LeafContainerT

Definition at line 239 of file octree2buf_base.h.

## LeafNode

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNode = OctreeLeafNode<LeafContainerT>

Definition at line 236 of file octree2buf_base.h.

## LeafNodeBreadthIterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNodeBreadthIterator = OctreeLeafNodeBreadthFirstIterator<OctreeT>

Definition at line 292 of file octree2buf_base.h.

## LeafNodeDepthFirstIterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNodeDepthFirstIterator = OctreeLeafNodeDepthFirstIterator<OctreeT>

Definition at line 267 of file octree2buf_base.h.

## LeafNodeIterator

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNodeIterator = OctreeLeafNodeDepthFirstIterator<OctreeT>

Definition at line 251 of file octree2buf_base.h.

## OctreeT

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::OctreeT = Octree2BufBase<LeafContainerT, BranchContainerT>

Definition at line 226 of file octree2buf_base.h.

## Constructor & Destructor Documentation

## Octree2BufBase() [1/2]

template<typename LeafContainerT , typename BranchContainerT >

pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::Octree2BufBase | ( |  | ) |

Empty constructor.

Definition at line 48 of file octree2buf_base.hpp.

## ~Octree2BufBase()

template<typename LeafContainerT , typename BranchContainerT >

pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::~Octree2BufBase | ( |  | ) |

virtual

Empty deconstructor.

Definition at line 62 of file octree2buf_base.hpp.

## Octree2BufBase() [2/2]

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::Octree2BufBase | ( | const Octree2BufBase< LeafContainerT, BranchContainerT > & | source | ) |

inline

Copy constructor.

Definition at line 313 of file octree2buf_base.h.

## Member Function Documentation

## begin()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

Iterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::begin | ( | unsigned int | max_depth_arg = `0` | ) |

inline

Definition at line 244 of file octree2buf_base.h.

## branchHasChild()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

bool pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::branchHasChild | ( | const BranchNode & | branch_arg,
|  | unsigned char | child_idx_arg
| ) |  | const

inline protected

Check if branch is pointing to a particular child node.

Parameters

  branch_arg | reference to octree branch class
  child_idx_arg | index to child node

Returns
  "true" if pointer to child node exists; "false" otherwise

Definition at line 562 of file octree2buf_base.h.

## breadth_begin()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

BreadthFirstIterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::breadth_begin | ( | unsigned int | max_depth_arg = `0` | ) |

inline

Definition at line 288 of file octree2buf_base.h.

## breadth_end()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

const BreadthFirstIterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::breadth_end | ( |  | ) |

inline

Definition at line 289 of file octree2buf_base.h.

## createBranchChild()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

BranchNode* pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::createBranchChild | ( | BranchNode & | branch_arg,
|  | unsigned char | child_idx_arg
| ) |  |

inline protected

Fetch and add a new branch child to a branch class in current buffer.

Parameters

  branch_arg | reference to octree branch class
  child_idx_arg | index to child node

Returns
  pointer of new branch child to this reference

Definition at line 744 of file octree2buf_base.h.

## createLeaf() [1/2]

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

LeafContainerT* pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::createLeaf | ( | const OctreeKey & | key_arg | ) |

inline protected

Create a leaf node.

Note
  If the leaf node at the given octree node does not exist, it will be created and added to the tree.

Parameters

  key_arg | octree key addressing a leaf node.

Returns
  pointer to an existing or created leaf container.

Definition at line 517 of file octree2buf_base.h.

## createLeaf() [2/2]

template<typename LeafContainerT , typename BranchContainerT >

LeafContainerT * pcl::octree::Octree2BufBase< 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_arg | index of leaf node in the X axis.
  idx_y_arg | index of leaf node in the Y axis.
  idx_z_arg | index of leaf node in the Z axis.

Returns
  pointer to new leaf node container.

Definition at line 115 of file octree2buf_base.hpp.

## createLeafChild()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

LeafNode* pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::createLeafChild | ( | BranchNode & | branch_arg,
|  | unsigned char | child_idx_arg
| ) |  |

inline protected

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

Parameters

  branch_arg | reference to octree branch class
  child_idx_arg | index to child node

Returns
  pointer of new leaf child to this reference

Definition at line 761 of file octree2buf_base.h.

## createLeafRecursive()

template<typename LeafContainerT , typename BranchContainerT >

unsigned int pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::createLeafRecursive | ( | const OctreeKey & | key_arg,
|  | unsigned int | depth_mask_arg,
|  | BranchNode * | branch_arg,
|  | LeafNode *& | return_leaf_arg,
|  | BranchNode *& | parent_of_leaf_arg,
|  | bool | branch_reset_arg = `false`
| ) |  |

protected

Create a leaf node at octree key.

If leaf node does already exist, it is returned.

Parameters

  key_arg | reference to an octree key
  depth_mask_arg | depth mask used for octree key analysis and for branch depth indicator
  branch_arg | current branch node
  return_leaf_arg | return pointer to leaf container
  parent_of_leaf_arg | return pointer to parent of leaf node
  branch_reset_arg | Reset pointer array of current branch

Returns
  depth mask at which leaf node was created/found

Definition at line 321 of file octree2buf_base.hpp.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::createLeaf().

## deleteBranch()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteBranch | ( | BranchNode & | branch_arg | ) |

inline protected

Delete branch and all its subchilds from octree (both buffers)

Parameters

  branch_arg | reference to octree branch class

Definition at line 716 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteBranchChild().

## deleteBranchChild() [1/2]

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteBranchChild | ( | BranchNode & | branch_arg,
|  | unsigned char | buffer_selector_arg,
|  | unsigned char | child_idx_arg
| ) |  |

inline protected

Delete child node and all its subchilds from octree in specific buffer.

Parameters

  branch_arg | reference to octree branch class
  buffer_selector_arg | buffer selector
  child_idx_arg | index to child node

Definition at line 669 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteBranch(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteBranchChild().

## deleteBranchChild() [2/2]

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteBranchChild | ( | BranchNode & | branch_arg,
|  | unsigned char | child_idx_arg
| ) |  |

inline protected

Delete child node and all its subchilds from octree in current buffer.

Parameters

  branch_arg | reference to octree branch class
  child_idx_arg | index to child node

Definition at line 708 of file octree2buf_base.h.

## deleteCurrentBuffer()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteCurrentBuffer | ( |  | ) |

inline

Delete the octree structure in the current buffer.

Definition at line 427 of file octree2buf_base.h.

## deleteLeafRecursive()

template<typename LeafContainerT , typename BranchContainerT >

bool pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteLeafRecursive | ( | const OctreeKey & | key_arg,
|  | unsigned int | depth_mask_arg,
|  | BranchNode * | branch_arg
| ) |  |

protected

Recursively search and delete leaf node.

Parameters

  key_arg | reference to an octree key
  depth_mask_arg | depth mask used for octree key analysis and branch depth indicator
  branch_arg | current branch node

Returns
  "true" if branch does not contain any childs; "false" otherwise. This indicates if current branch can be deleted.

Definition at line 467 of file octree2buf_base.hpp.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::removeLeaf().

## deletePreviousBuffer()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deletePreviousBuffer | ( |  | ) |

inline

Delete octree structure of previous buffer.

Definition at line 421 of file octree2buf_base.h.

## deleteTree()

template<typename LeafContainerT , typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteTree | ( |  | ) |

Delete the octree structure and its leaf nodes.

Definition at line 148 of file octree2buf_base.hpp.

## depth_begin()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

DepthFirstIterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::depth_begin | ( | unsigned int | maxDepth_arg = `0` | ) |

inline

Definition at line 282 of file octree2buf_base.h.

## depth_end()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

const DepthFirstIterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::depth_end | ( |  | ) |

inline

Definition at line 283 of file octree2buf_base.h.

## deserializeTree() [1/2]

template<typename LeafContainerT , typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deserializeTree | ( | std::vector< char > & | binary_tree_in_arg,
|  | bool | do_XOR_decoding_arg = `false`
| ) |  |

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

Leaf nodes are initialized with getDataTByKey(..).

Parameters

  binary_tree_in_arg | reference to input vector for reading binary tree structure.
  do_XOR_decoding_arg | select if binary tree structure is based on current octree (false) of based on a XOR comparison between current and previous octree

Definition at line 245 of file octree2buf_base.hpp.

## deserializeTree() [2/2]

template<typename LeafContainerT, typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deserializeTree | ( | std::vector< char > & | binary_tree_in_arg,
|  | std::vector< LeafContainerT * > & | leaf_container_vector_arg,
|  | bool | do_XOR_decoding_arg = `false`
| ) |  |

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

Leaf nodes are initialized with DataT elements from the dataVector.

Parameters

  binary_tree_in_arg | reference to inpvectoream for reading binary tree structure.
  leaf_container_vector_arg | vector of pointers to all LeafContainerT objects in the octree
  do_XOR_decoding_arg | select if binary tree structure is based on current octree (false) of based on a XOR comparison between current and previous octree

Definition at line 267 of file octree2buf_base.hpp.

## deserializeTreeCallback()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

virtual void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deserializeTreeCallback | ( | LeafContainerT & | ,
|  | const OctreeKey & |
| ) |  |

inline protected virtual

Callback executed for every leaf node data during deserialization.

Definition at line 869 of file octree2buf_base.h.

## deserializeTreeRecursive()

template<typename LeafContainerT, typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deserializeTreeRecursive | ( | BranchNode * | branch_arg,
|  | unsigned int | depth_mask_arg,
|  | OctreeKey & | key_arg,
|  | typename std::vector< char >::const_iterator & | binary_tree_in_it_arg,
|  | typename std::vector< char >::const_iterator & | binary_tree_in_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,
|  | bool | branch_reset_arg = `false`,
|  | bool | do_XOR_decoding_arg = `false`
| ) |  |

protected

Rebuild an octree based on binary XOR octree description and DataT objects for leaf node initialization.

Parameters

  branch_arg | current branch node
  depth_mask_arg | depth mask used for octree key analysis and branch depth indicator
  key_arg | reference to an octree key
  binary_tree_in_it_arg | iterator of binary input data
  binary_tree_in_it_end_arg |
  leaf_container_vector_it_arg | iterator pointing to leaf container pointers to be added to a leaf node
  leaf_container_vector_it_end_arg | iterator pointing to leaf container pointers pointing to last object in input container.
  branch_reset_arg | Reset pointer array of current branch
  do_XOR_decoding_arg | select if binary tree structure is based on current octree (false) of based on a XOR comparison between current and previous octree

Definition at line 619 of file octree2buf_base.hpp.

## end()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

const Iterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::end | ( |  | ) |

inline

Definition at line 245 of file octree2buf_base.h.

## existLeaf() [1/2]

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

bool pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::existLeaf | ( | const OctreeKey & | key_arg | ) | const

inline protected

Check if leaf doesn't exist in the octree.

Parameters

  key_arg | octree key addressing a leaf node.

Returns
  "true" if leaf node is found; "false" otherwise

Definition at line 533 of file octree2buf_base.h.

## existLeaf() [2/2]

template<typename LeafContainerT , typename BranchContainerT >

bool pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::existLeaf | ( | unsigned int | idx_x_arg,
|  | unsigned int | idx_y_arg,
|  | unsigned int | idx_z_arg
| ) |  | const

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

Parameters

  idx_x_arg | index of leaf node in the X axis.
  idx_y_arg | index of leaf node in the Y axis.
  idx_z_arg | index of leaf node in the Z axis.

Returns
  "true" if leaf node search is successful, otherwise it returns "false".

Definition at line 126 of file octree2buf_base.hpp.

## findLeaf() [1/2]

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

LeafContainerT* pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::findLeaf | ( | const OctreeKey & | key_arg | ) | const

inline protected

Find leaf node.

Parameters

  key_arg | octree key addressing a leaf node.

Returns
  pointer to leaf container. If leaf node is not found, this pointer returns 0.

Definition at line 504 of file octree2buf_base.h.

## findLeaf() [2/2]

template<typename LeafContainerT , typename BranchContainerT >

LeafContainerT * pcl::octree::Octree2BufBase< 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_arg | index of leaf node in the X axis.
  idx_y_arg | index of leaf node in the Y axis.
  idx_z_arg | index of leaf node in the Z axis.

Returns
  pointer to leaf node container if found, null pointer otherwise.

Definition at line 104 of file octree2buf_base.hpp.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::existLeaf().

## findLeafRecursive()

template<typename LeafContainerT, typename BranchContainerT >

void pcl::octree::Octree2BufBase< 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_arg | reference to an octree key
  depth_mask_arg | depth mask used for octree key analysis and for branch depth indicator
  branch_arg | current branch node
  result_arg | pointer to leaf container class

Definition at line 432 of file octree2buf_base.hpp.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::findLeaf().

## getBranchBitPattern() [1/2]

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

char pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getBranchBitPattern | ( | const BranchNode & | branch_arg | ) | const

inline protected

Generate bit pattern reflecting the existence of child node pointers for current buffer.

Parameters

  branch_arg | reference to octree branch class

Returns
  a single byte with 8 bits of child node information

Definition at line 595 of file octree2buf_base.h.

## getBranchBitPattern() [2/2]

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

char pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getBranchBitPattern | ( | const BranchNode & | branch_arg,
|  | unsigned char | bufferSelector_arg
| ) |  | const

inline protected

Generate bit pattern reflecting the existence of child node pointers in specific buffer.

Parameters

  branch_arg | reference to octree branch class
  bufferSelector_arg | buffer selector

Returns
  a single byte with 8 bits of child node information

Definition at line 615 of file octree2buf_base.h.

## getBranchChildPtr()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

OctreeNode* pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getBranchChildPtr | ( | const BranchNode & | branch_arg,
|  | unsigned char | child_idx_arg
| ) |  | const

inline protected

Retrieve a child node pointer for child node at child_idx.

Parameters

  branch_arg | reference to octree branch class
  child_idx_arg | index to child node

Returns
  pointer to octree child node class

Definition at line 574 of file octree2buf_base.h.

## getBranchCount()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

std::size_t pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getBranchCount | ( |  | ) | const

inline

Return the amount of existing branches in the octree.

Returns
  amount of branch nodes.

Definition at line 410 of file octree2buf_base.h.

## getBranchXORBitPattern()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

char pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getBranchXORBitPattern | ( | const BranchNode & | branch_arg | ) | const

inline protected

Generate XOR bit pattern reflecting differences between the two octree buffers.

Parameters

  branch_arg | reference to octree branch class

Returns
  a single byte with 8 bits of child node XOR difference information

Definition at line 635 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::hasBranchChanges().

## getLeafCount()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

std::size_t pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getLeafCount | ( |  | ) | const

inline

Return the amount of existing leafs in the octree.

Returns
  amount of registered leaf nodes.

Definition at line 402 of file octree2buf_base.h.

## getRootNode()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

OctreeNode* pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getRootNode | ( |  | ) | const

inline protected

Retrieve root node.

Definition at line 494 of file octree2buf_base.h.

## getTreeDepth()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

unsigned int pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getTreeDepth | ( |  | ) | const

inline

Get the maximum depth of the octree.

Returns
  depth_arg: maximum depth of octree

Definition at line 357 of file octree2buf_base.h.

## hasBranchChanges()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

bool pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::hasBranchChanges | ( | const BranchNode & | branch_arg | ) | const

inline protected

Test if branch changed between previous and current buffer.

Parameters

  branch_arg | reference to octree branch class

Returns
  "true", if child node information differs between current and previous octree buffer

Definition at line 659 of file octree2buf_base.h.

## leaf_begin()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

LeafNodeIterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::leaf_begin | ( | unsigned int | max_depth_arg = `0` | ) |

inline

Definition at line 255 of file octree2buf_base.h.

## leaf_breadth_begin()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

LeafNodeBreadthIterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::leaf_breadth_begin | ( | unsigned int | max_depth_arg = `0u` | ) |

inline

Definition at line 295 of file octree2buf_base.h.

## leaf_breadth_end()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

const LeafNodeBreadthIterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::leaf_breadth_end | ( |  | ) |

inline

Definition at line 300 of file octree2buf_base.h.

## leaf_depth_begin()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

LeafNodeDepthFirstIterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::leaf_depth_begin | ( | unsigned int | max_depth_arg = `0` | ) |

inline

Definition at line 269 of file octree2buf_base.h.

## leaf_depth_end()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

const LeafNodeDepthFirstIterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::leaf_depth_end | ( |  | ) |

inline

Definition at line 274 of file octree2buf_base.h.

## leaf_end()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

const LeafNodeIterator pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::leaf_end | ( |  | ) |

inline

Definition at line 261 of file octree2buf_base.h.

## Log2()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

double pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::Log2 | ( | double | n_arg | ) |

inline protected

Helper function to calculate the binary logarithm.

Parameters

  n_arg | some value

Returns
  binary logarithm (log2) of argument n_arg

Definition at line 889 of file octree2buf_base.h.

## octreeCanResize()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

bool pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::octreeCanResize | ( |  | ) |

inline protected

Test if octree is able to dynamically change its depth.

This is required for adaptive bounding box adjustment.

Returns
  "false" - not resizeable due to XOR serialization

Definition at line 897 of file octree2buf_base.h.

## operator=()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

Octree2BufBase& pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::operator= | ( | const Octree2BufBase< LeafContainerT, BranchContainerT > & | source | ) |

inline

Copy constructor.

Definition at line 328 of file octree2buf_base.h.

## printBinary()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::printBinary | ( | char | data_arg | ) |

inline protected

Prints binary representation of a byte - used for debugging.

Parameters

  data_arg | - byte to be printed to stdout

Definition at line 905 of file octree2buf_base.h.

## removeLeaf() [1/2]

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::removeLeaf | ( | const OctreeKey & | key_arg | ) |

inline protected

Remove leaf node from octree.

Parameters

  key_arg | octree key addressing a leaf node.

Definition at line 541 of file octree2buf_base.h.

## removeLeaf() [2/2]

template<typename LeafContainerT , typename BranchContainerT >

void pcl::octree::Octree2BufBase< 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_arg | index of leaf node in the X axis.
  idx_y_arg | index of leaf node in the Y axis.
  idx_z_arg | index of leaf node in the Z axis.

Definition at line 137 of file octree2buf_base.hpp.

## serializeLeafs()

template<typename LeafContainerT, typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::serializeLeafs | ( | std::vector< LeafContainerT * > & | leaf_container_vector_arg | ) |

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

Parameters

  leaf_container_vector_arg | vector of pointers to all LeafContainerT objects in the octree

Definition at line 228 of file octree2buf_base.hpp.

## serializeNewLeafs()

template<typename LeafContainerT, typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::serializeNewLeafs | ( | std::vector< LeafContainerT * > & | leaf_container_vector_arg | ) |

Outputs a vector of all DataT elements from leaf nodes, that do not exist in the previous octree buffer.

Parameters

  leaf_container_vector_arg | vector of pointers to all LeafContainerT objects in the octree

Definition at line 304 of file octree2buf_base.hpp.

Referenced by pcl::octree::OctreePointCloudChangeDetector< PointInT >::getPointIndicesFromNewVoxels().

## serializeTree() [1/2]

template<typename LeafContainerT , typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::serializeTree | ( | std::vector< char > & | binary_tree_out_arg,
|  | bool | do_XOR_encoding_arg = `false`
| ) |  |

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

Parameters

  binary_tree_out_arg | reference to output vector for writing binary tree structure.
  do_XOR_encoding_arg | select if binary tree structure should be generated based on current octree (false) of based on a XOR comparison between current and previous octree

Definition at line 190 of file octree2buf_base.hpp.

## serializeTree() [2/2]

template<typename LeafContainerT, typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::serializeTree | ( | std::vector< char > & | binary_tree_out_arg,
|  | std::vector< LeafContainerT * > & | leaf_container_vector_arg,
|  | bool | do_XOR_encoding_arg = `false`
| ) |  |

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

Parameters

  binary_tree_out_arg | reference to output vector for writing binary tree structure.
  leaf_container_vector_arg | pointer to all LeafContainerT objects in the octree
  do_XOR_encoding_arg | select if binary tree structure should be generated based on current octree (false) of based on a XOR comparison between current and previous octree

Definition at line 207 of file octree2buf_base.hpp.

## serializeTreeCallback()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

virtual void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::serializeTreeCallback | ( | LeafContainerT & | ,
|  | const OctreeKey & |
| ) |  |

inline protected virtual

Callback executed for every leaf node data during serialization.

Definition at line 862 of file octree2buf_base.h.

## serializeTreeRecursive()

template<typename LeafContainerT, typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::serializeTreeRecursive | ( | BranchNode * | branch_arg,
|  | OctreeKey & | key_arg,
|  | std::vector< char > * | binary_tree_out_arg,
|  | typename std::vector< LeafContainerT * > * | leaf_container_vector_arg,
|  | bool | do_XOR_encoding_arg = `false`,
|  | bool | new_leafs_filter_arg = `false`
| ) |  |

protected

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

Parameters

  branch_arg | current branch node
  key_arg | reference to an octree key
  binary_tree_out_arg | binary output vector
  leaf_container_vector_arg | vector to return pointers to all leaf container in the tree.
  do_XOR_encoding_arg | select if binary tree structure should be generated based on current octree (false) of based on a XOR comparison between current and previous octree
  new_leafs_filter_arg | execute callback only for leaf nodes that did not exist in preceding buffer

Definition at line 523 of file octree2buf_base.hpp.

## setBranchChildPtr()

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::setBranchChildPtr | ( | BranchNode & | branch_arg,
|  | unsigned char | child_idx_arg,
|  | OctreeNode * | new_child_arg
| ) |  |

inline protected

Assign new child node to branch.

Parameters

  branch_arg | reference to octree branch class
  child_idx_arg | index to child node
  new_child_arg | pointer to new child node

Definition at line 586 of file octree2buf_base.h.

## setMaxVoxelIndex()

template<typename LeafContainerT , typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::setMaxVoxelIndex | ( | unsigned int | max_voxel_index_arg | ) |

Set the maximum amount of voxels per dimension.

Parameters

  max_voxel_index_arg | maximum amount of voxels per dimension

Definition at line 71 of file octree2buf_base.hpp.

## setTreeDepth()

template<typename LeafContainerT , typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::setTreeDepth | ( | unsigned int | depth_arg | ) |

Set the maximum depth of the octree.

Parameters

  depth_arg | maximum depth of octree

Definition at line 88 of file octree2buf_base.hpp.

## switchBuffers()

template<typename LeafContainerT , typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::switchBuffers | ( |  | ) |

Switch buffers and reset current octree structure.

Definition at line 165 of file octree2buf_base.hpp.

## treeCleanUpRecursive()

template<typename LeafContainerT , typename BranchContainerT >

void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::treeCleanUpRecursive | ( | BranchNode * | branch_arg | ) |

protected

Recursively explore the octree and remove unused branch and leaf nodes.

Parameters

  branch_arg | current branch node

Definition at line 777 of file octree2buf_base.hpp.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteCurrentBuffer(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deletePreviousBuffer().

## Friends And Related Function Documentation

## OctreeBreadthFirstIterator< OctreeT >

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

friend class OctreeBreadthFirstIterator< OctreeT >

friend

Definition at line 231 of file octree2buf_base.h.

## OctreeDepthFirstIterator< OctreeT >

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

friend class OctreeDepthFirstIterator< OctreeT >

friend

Definition at line 230 of file octree2buf_base.h.

## OctreeIteratorBase< OctreeT >

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

friend class OctreeIteratorBase< OctreeT >

friend

Definition at line 229 of file octree2buf_base.h.

## OctreeLeafNodeBreadthFirstIterator< OctreeT >

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

friend class OctreeLeafNodeBreadthFirstIterator< OctreeT >

friend

Definition at line 233 of file octree2buf_base.h.

## OctreeLeafNodeDepthFirstIterator< OctreeT >

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

friend class OctreeLeafNodeDepthFirstIterator< OctreeT >

friend

Definition at line 232 of file octree2buf_base.h.

## Member Data Documentation

## branch_count_

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

std::size_t pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::branch_count_

protected

Amount of branch nodes

Definition at line 926 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getBranchCount(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=().

## buffer_selector_

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

unsigned char pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::buffer_selector_

protected

Currently active octree buffer

Definition at line 938 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::branchHasChild(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::createBranchChild(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::createLeafChild(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteBranchChild(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteCurrentBuffer(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getBranchBitPattern(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getBranchChildPtr(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::setBranchChildPtr().

## depth_mask_

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

unsigned int pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::depth_mask_

protected

Depth mask based on octree depth

Definition at line 932 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::createLeaf(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::findLeaf(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::removeLeaf().

## dynamic_depth_enabled_

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

bool pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::dynamic_depth_enabled_

protected

Enable dynamic_depth.

Note
  Note that this parameter is ignored in octree2buf!

Definition at line 948 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=().

## leaf_count_

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

std::size_t pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::leaf_count_

protected

Amount of leaf nodes

Definition at line 923 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteCurrentBuffer(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getLeafCount(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=().

## max_key_

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

OctreeKey pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::max_key_

protected

key range

Definition at line 935 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::removeLeaf().

## octree_depth_

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

unsigned int pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::octree_depth_

protected

Octree depth.

Definition at line 944 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getTreeDepth(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::leaf_breadth_begin(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=().

## root_node_

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

BranchNode* pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::root_node_

protected

Pointer to root branch node of octree

Definition at line 929 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::createLeaf(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteCurrentBuffer(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deletePreviousBuffer(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::findLeaf(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getRootNode(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::removeLeaf().

## tree_dirty_flag_

template<typename LeafContainerT = int, typename BranchContainerT = OctreeContainerEmpty>

bool pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::tree_dirty_flag_

protected

Definition at line 941 of file octree2buf_base.h.

Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::removeLeaf().

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

- pcl/octree/octree2buf_base.h
- pcl/octree/impl/octree2buf_base.hpp