octomap  1.9.7
leaf_iterator Class Reference

Iterator to iterate over all leafs of the tree. More...

+ Inheritance diagram for leaf_iterator:
+ Collaboration diagram for leaf_iterator:

Public Member Functions

point3d getCoordinate () const
 return the center coordinate of the current node More...
 
unsigned getDepth () const
 return depth of the current node More...
 
OcTreeKey getIndexKey () const
 
const OcTreeKey & getKey () const
 
double getSize () const
 
double getX () const
 
double getY () const
 
double getZ () const
 
 leaf_iterator ()
 
 leaf_iterator (const leaf_iterator &other)
 
 leaf_iterator (OcTreeBaseImpl< NodeType, INTERFACE > const *ptree, uint8_t depth=0)
 Constructor of the iterator. More...
 
bool operator!= (const iterator_base &other) const
 Comparison between iterators. First compares the tree, then stack size and top element of stack. More...
 
NodeType & operator* ()
 Return the current node in the octree which the iterator is referring to. More...
 
const NodeType & operator* () const
 Return the current node in the octree which the iterator is referring to. More...
 
leaf_iteratoroperator++ ()
 prefix increment operator of iterator (++it) More...
 
leaf_iterator operator++ (int)
 postfix increment operator of iterator (it++) More...
 
NodeType * operator-> ()
 Ptr operator will return the current node in the octree which the iterator is referring to. More...
 
NodeType const * operator-> () const
 Ptr operator will return the current node in the octree which the iterator is referring to. More...
 
bool operator== (const iterator_base &other) const
 Comparison between iterators. First compares the tree, then stack size and top element of stack. More...
 

Protected Member Functions

void singleIncrement ()
 One step of depth-first tree traversal. How this is used depends on the actual iterator. More...
 

Protected Attributes

uint8_t maxDepth
 Maximum depth for depth-limited queries. More...
 
std::stack< StackElement, std::vector< StackElement > > stack
 Internal recursion stack. Apparently a stack of vector works fastest here. More...
 
OcTreeBaseImpl< NodeType, INTERFACE > const * tree
 Octree this iterator is working on. More...
 

Detailed Description

Iterator to iterate over all leafs of the tree.

Inner nodes are skipped. See below for example usage. Note that the non-trivial call to tree->end_leafs() should be done only once for efficiency!

for(OcTreeTYPE::leaf_iterator it = tree->begin_leafs(),
end=tree->end_leafs(); it!= end; ++it)
{
//manipulate node, e.g.:
std::cout << "Node center: " << it.getCoordinate() << std::endl;
std::cout << "Node size: " << it.getSize() << std::endl;
std::cout << "Node value: " << it->getValue() << std::endl;
}

Constructor & Destructor Documentation

◆ leaf_iterator() [1/3]

leaf_iterator::leaf_iterator ( )
inline

◆ leaf_iterator() [2/3]

leaf_iterator::leaf_iterator ( OcTreeBaseImpl< NodeType, INTERFACE > const *  ptree,
uint8_t  depth = 0 
)
inline

Constructor of the iterator.

Parameters
ptreeOcTreeBaseImpl on which the iterator is used on
depthMaximum depth to traverse the tree. 0 (default): unlimited

References operator++(), and iterator_base::stack.

◆ leaf_iterator() [3/3]

leaf_iterator::leaf_iterator ( const leaf_iterator other)
inline

Member Function Documentation

◆ getCoordinate()

point3d iterator_base::getCoordinate ( ) const
inlineinherited

return the center coordinate of the current node

References iterator_base::stack, and iterator_base::tree.

◆ getDepth()

unsigned iterator_base::getDepth ( ) const
inlineinherited

return depth of the current node

References iterator_base::stack.

◆ getIndexKey()

OcTreeKey iterator_base::getIndexKey ( ) const
inlineinherited
Returns
the OcTreeKey of the current node, for nodes with depth != maxDepth

References octomap::computeIndexKey(), iterator_base::stack, and iterator_base::tree.

◆ getKey()

const OcTreeKey& iterator_base::getKey ( ) const
inlineinherited
Returns
the OcTreeKey of the current node

References iterator_base::stack.

◆ getSize()

double iterator_base::getSize ( ) const
inlineinherited
Returns
the side of the volume occupied by the current node

References iterator_base::stack, and iterator_base::tree.

◆ getX()

double iterator_base::getX ( ) const
inlineinherited
Returns
single coordinate of the current node

References iterator_base::stack, and iterator_base::tree.

◆ getY()

double iterator_base::getY ( ) const
inlineinherited
Returns
single coordinate of the current node

References iterator_base::stack, and iterator_base::tree.

◆ getZ()

double iterator_base::getZ ( ) const
inlineinherited
Returns
single coordinate of the current node

References iterator_base::stack, and iterator_base::tree.

◆ operator!=()

bool iterator_base::operator!= ( const iterator_base other) const
inlineinherited

Comparison between iterators. First compares the tree, then stack size and top element of stack.

References iterator_base::stack, and iterator_base::tree.

◆ operator*() [1/2]

NodeType& iterator_base::operator* ( )
inlineinherited

Return the current node in the octree which the iterator is referring to.

References iterator_base::stack.

◆ operator*() [2/2]

const NodeType& iterator_base::operator* ( ) const
inlineinherited

Return the current node in the octree which the iterator is referring to.

References iterator_base::stack.

◆ operator++() [1/2]

leaf_iterator& leaf_iterator::operator++ ( )
inline

prefix increment operator of iterator (++it)

References iterator_base::singleIncrement(), iterator_base::stack, and iterator_base::tree.

Referenced by leaf_iterator().

◆ operator++() [2/2]

leaf_iterator leaf_iterator::operator++ ( int  )
inline

postfix increment operator of iterator (it++)

◆ operator->() [1/2]

NodeType* iterator_base::operator-> ( )
inlineinherited

Ptr operator will return the current node in the octree which the iterator is referring to.

References iterator_base::stack.

◆ operator->() [2/2]

NodeType const* iterator_base::operator-> ( ) const
inlineinherited

Ptr operator will return the current node in the octree which the iterator is referring to.

References iterator_base::stack.

◆ operator==()

bool iterator_base::operator== ( const iterator_base other) const
inlineinherited

Comparison between iterators. First compares the tree, then stack size and top element of stack.

References iterator_base::stack, and iterator_base::tree.

◆ singleIncrement()

void iterator_base::singleIncrement ( )
inlineprotectedinherited

Field Documentation

◆ maxDepth

uint8_t iterator_base::maxDepth
protectedinherited

◆ stack

◆ tree


The documentation for this class was generated from the following file:
iterator_base::tree
OcTreeBaseImpl< NodeType, INTERFACE > const * tree
Octree this iterator is working on.
Definition: OcTreeIterator.hxx:158