octomap 1.9.8
Loading...
Searching...
No Matches
octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator Class Reference

Bounding-box leaf iterator. More...

#include <OcTreeBaseImpl.h>

Inheritance diagram for octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator:
Collaboration diagram for octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator:

Public Member Functions

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

Data Fields

OcTreeKey elements
 STL member.

Protected Member Functions

void singleIncrement ()

Protected Attributes

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

Detailed Description

template<class NODE, class INTERFACE>
class octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator

Bounding-box leaf iterator.

This iterator will traverse all leaf nodes within a given bounding box (axis-aligned). See below for example usage. Note that the non-trivial call to tree->end_leafs_bbx() should be done only once for efficiency!

for(OcTreeTYPE::leaf_bbx_iterator it = tree->begin_leafs_bbx(min,max),
end=tree->end_leafs_bbx(); 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;
}
OcTreeBaseImpl< NodeType, INTERFACE > const * tree
Octree this iterator is working on.
Definition OcTreeBaseImpl.h:159
const iterator end() const
Definition OcTreeBaseImpl.h:329

Constructor & Destructor Documentation

◆ leaf_bbx_iterator() [1/4]

template<class NODE, class INTERFACE>
octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator::leaf_bbx_iterator ( )
inline

◆ leaf_bbx_iterator() [2/4]

template<class NODE, class INTERFACE>
octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator::leaf_bbx_iterator ( OcTreeBaseImpl< NodeType, INTERFACE > const * ptree,
const point3d & min,
const point3d & max,
uint8_t depth = 0 )
inline

Constructor of the iterator.

The bounding box corners min and max are converted into an OcTreeKey first.

Note
Due to rounding and discretization effects, nodes may be traversed that have float coordinates appearing outside of the (float) bounding box. However, the node's complete volume will include the bounding box coordinate. For a more exact control, use the constructor with OcTreeKeys instead.
Parameters
ptreeOcTreeBaseImpl on which the iterator is used on
minMinimum point3d of the axis-aligned boundingbox
maxMaximum point3d of the axis-aligned boundingbox
depthMaximum depth to traverse the tree. 0 (default): unlimited

◆ leaf_bbx_iterator() [3/4]

template<class NODE, class INTERFACE>
octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator::leaf_bbx_iterator ( OcTreeBaseImpl< NodeType, INTERFACE > const * ptree,
const OcTreeKey & min,
const OcTreeKey & max,
uint8_t depth = 0 )
inline

Constructor of the iterator.

This version uses the exact keys as axis-aligned bounding box (including min and max).

Parameters
ptreeOcTreeBaseImpl on which the iterator is used on
minMinimum OcTreeKey to be included in the axis-aligned boundingbox
maxMaximum OcTreeKey to be included in the axis-aligned boundingbox
depthMaximum depth to traverse the tree. 0 (default): unlimited

◆ leaf_bbx_iterator() [4/4]

template<class NODE, class INTERFACE>
octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator::leaf_bbx_iterator ( const leaf_bbx_iterator & other)
inline

Member Function Documentation

◆ getCoordinate()

template<class NODE, class INTERFACE>
point3d octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::getCoordinate ( ) const
inlineinherited

return the center coordinate of the current node

◆ getDepth()

template<class NODE, class INTERFACE>
unsigned octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::getDepth ( ) const
inlineinherited

return depth of the current node

◆ getIndexKey()

template<class NODE, class INTERFACE>
OcTreeKey octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::getIndexKey ( ) const
inlineinherited
Returns
the OcTreeKey of the current node, for nodes with depth != maxDepth

◆ getKey()

template<class NODE, class INTERFACE>
const OcTreeKey & octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::getKey ( ) const
inlineinherited
Returns
the OcTreeKey of the current node

◆ getSize()

template<class NODE, class INTERFACE>
double octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::getSize ( ) const
inlineinherited

◆ getX()

template<class NODE, class INTERFACE>
double octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::getX ( ) const
inlineinherited

◆ getY()

template<class NODE, class INTERFACE>
double octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::getY ( ) const
inlineinherited

◆ getZ()

template<class NODE, class INTERFACE>
double octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::getZ ( ) const
inlineinherited

◆ operator!=()

template<class NODE, class INTERFACE>
bool octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::operator!= ( const iterator_base & other) const
inlineinherited

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

◆ operator*() [1/2]

template<class NODE, class INTERFACE>
NodeType & octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::operator* ( )
inlineinherited

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

◆ operator*() [2/2]

template<class NODE, class INTERFACE>
const NodeType & octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::operator* ( ) const
inlineinherited

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

◆ operator++() [1/2]

template<class NODE, class INTERFACE>
leaf_bbx_iterator & octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator::operator++ ( )
inline

prefix increment operator of iterator (++it)

◆ operator++() [2/2]

template<class NODE, class INTERFACE>
leaf_bbx_iterator octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator::operator++ ( int )
inline

postfix increment operator of iterator (it++)

References octomap::OcTreeBaseImpl< NODE, INTERFACE >::tree_depth.

◆ operator->() [1/2]

template<class NODE, class INTERFACE>
NodeType * octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::operator-> ( )
inlineinherited

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

◆ operator->() [2/2]

template<class NODE, class INTERFACE>
NodeType const * octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::operator-> ( ) const
inlineinherited

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

◆ operator==()

template<class NODE, class INTERFACE>
bool octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::operator== ( const iterator_base & other) const
inlineinherited

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

◆ singleIncrement()

template<class NODE, class INTERFACE>
void octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator::singleIncrement ( )
inlineprotected

Field Documentation

◆ elements

OcTreeKey std::vector< OcTreeKey >::elements
inherited

STL member.

◆ maxDepth

template<class NODE, class INTERFACE>
uint8_t octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::maxDepth
protectedinherited

Maximum depth for depth-limited queries.

Referenced by octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator::leaf_bbx_iterator().

◆ maxKey

template<class NODE, class INTERFACE>
OcTreeKey octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator::maxKey
protected

◆ minKey

template<class NODE, class INTERFACE>
OcTreeKey octomap::OcTreeBaseImpl< NODE, INTERFACE >::leaf_bbx_iterator::minKey
protected

◆ stack

template<class NODE, class INTERFACE>
std::stack<StackElement,std::vector<StackElement> > octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::stack
protectedinherited

Internal recursion stack. Apparently a stack of vector works fastest here.

◆ tree

template<class NODE, class INTERFACE>
OcTreeBaseImpl<NodeType,INTERFACE> const* octomap::OcTreeBaseImpl< NODE, INTERFACE >::iterator_base::tree
protectedinherited

Octree this iterator is working on.


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