Point Cloud Library (PCL)
1.14.1dev

That's a very specialized and simple octree class. More...
#include <pcl/recognition/ransac_based/orr_octree.h>
Classes  
class  Node 
Public Types  
using  PointCloudIn = pcl::PointCloud< pcl::PointXYZ > 
using  PointCloudOut = pcl::PointCloud< pcl::PointXYZ > 
using  PointCloudN = pcl::PointCloud< pcl::Normal > 
Public Member Functions  
ORROctree ()  
virtual  ~ORROctree () 
void  clear () 
void  build (const PointCloudIn &points, float voxel_size, const PointCloudN *normals=nullptr, float enlarge_bounds=0.00001f) 
Creates an octree which encloses 'points' and with leaf size equal to 'voxel_size'. More...  
void  build (const float *bounds, float voxel_size) 
Creates an empty octree with bounds at least as large as the ones provided as input and with leaf size equal to 'voxel_size'. More...  
ORROctree::Node *  createLeaf (float x, float y, float z) 
Creates the leaf containing p = (x, y, z) and returns a pointer to it, however, only if p lies within the octree bounds! A more general version which allows p to be out of bounds is not implemented yet. More...  
void  getFullLeavesIntersectedBySphere (const float *p, float radius, std::list< ORROctree::Node * > &out) const 
This method returns a super set of the full leavess which are intersected by the sphere with radius 'radius' and centered at 'p'. More...  
ORROctree::Node *  getRandomFullLeafOnSphere (const float *p, float radius) const 
Randomly chooses and returns a full leaf that is intersected by the sphere with center 'p' and 'radius'. More...  
ORROctree::Node *  getLeaf (int i, int j, int k) 
Since the leaves are aligned in a rectilinear grid, each leaf has a unique id. More...  
ORROctree::Node *  getLeaf (float x, float y, float z) 
Returns a pointer to the leaf containing p = (x, y, z) or NULL if no such leaf exists. More...  
void  deleteBranch (Node *node) 
Deletes the branch 'node' is part of. More...  
std::vector< ORROctree::Node * > &  getFullLeaves () 
Returns a vector with all octree leaves which contain at least one point. More...  
const std::vector< ORROctree::Node * > &  getFullLeaves () const 
void  getFullLeavesPoints (PointCloudOut &out) const 
void  getNormalsOfFullLeaves (PointCloudN &out) const 
ORROctree::Node *  getRoot () 
const float *  getBounds () const 
void  getBounds (float b[6]) const 
float  getVoxelSize () const 
void  insertNeighbors (Node *node) 
Protected Attributes  
float  voxel_size_ {1.0} 
float  bounds_ [6] 
int  tree_levels_ {1} 
Node *  root_ {nullptr} 
std::vector< Node * >  full_leaves_ 
That's a very specialized and simple octree class.
That's the way it is intended to be, that's why no templates and stuff like this.
Definition at line 68 of file orr_octree.h.
Definition at line 71 of file orr_octree.h.
Definition at line 73 of file orr_octree.h.
Definition at line 72 of file orr_octree.h.
pcl::recognition::ORROctree::ORROctree  (  ) 

inlinevirtual 
Definition at line 269 of file orr_octree.h.
void pcl::recognition::ORROctree::build  (  const float *  bounds, 
float  voxel_size  
) 
Creates an empty octree with bounds at least as large as the ones provided as input and with leaf size equal to 'voxel_size'.
void pcl::recognition::ORROctree::build  (  const PointCloudIn &  points, 
float  voxel_size,  
const PointCloudN *  normals = nullptr , 

float  enlarge_bounds = 0.00001f 

) 
Creates an octree which encloses 'points' and with leaf size equal to 'voxel_size'.
'enlarge_bounds' makes sure that no points from the input will lie on the octree boundary by enlarging the bounds by that factor. For example, enlarge_bounds = 1 means that the bounds will be enlarged by 100%. The default value is fine.
void pcl::recognition::ORROctree::clear  (  ) 

inline 
Creates the leaf containing p = (x, y, z) and returns a pointer to it, however, only if p lies within the octree bounds! A more general version which allows p to be out of bounds is not implemented yet.
The method returns NULL if p is not within the root bounds. If the leaf containing p already exists nothing happens and method just returns a pointer to the leaf.
Definition at line 291 of file orr_octree.h.
References pcl::recognition::ORROctree::Node::createChildren(), pcl::recognition::ORROctree::Node::getCenter(), pcl::recognition::ORROctree::Node::getChild(), pcl::recognition::ORROctree::Node::getData(), and pcl::recognition::ORROctree::Node::setData().
void pcl::recognition::ORROctree::deleteBranch  (  Node *  node  ) 
Deletes the branch 'node' is part of.

inline 
Definition at line 418 of file orr_octree.h.

inline 
Definition at line 424 of file orr_octree.h.

inline 
Returns a vector with all octree leaves which contain at least one point.
Definition at line 403 of file orr_octree.h.

inline 
Definition at line 406 of file orr_octree.h.
void pcl::recognition::ORROctree::getFullLeavesIntersectedBySphere  (  const float *  p, 
float  radius,  
std::list< ORROctree::Node * > &  out  
)  const 
This method returns a super set of the full leavess which are intersected by the sphere with radius 'radius' and centered at 'p'.
Pointers to the intersected full leaves are saved in 'out'. The method computes a super set in the sense that in general not all leaves saved in 'out' are really intersected by the sphere. The intersection test is based on the leaf radius (since its faster than checking all leaf corners and sides), so we report more leaves than we should, but still, this is a fair approximation.
void pcl::recognition::ORROctree::getFullLeavesPoints  (  PointCloudOut &  out  )  const 

inline 
Returns a pointer to the leaf containing p = (x, y, z) or NULL if no such leaf exists.
Definition at line 364 of file orr_octree.h.
References pcl::recognition::ORROctree::Node::getCenter(), pcl::recognition::ORROctree::Node::getChild(), and pcl::recognition::ORROctree::Node::hasChildren().

inline 
Since the leaves are aligned in a rectilinear grid, each leaf has a unique id.
The method returns the leaf with id [i, j, k] or NULL is no such leaf exists.
Definition at line 352 of file orr_octree.h.
void pcl::recognition::ORROctree::getNormalsOfFullLeaves  (  PointCloudN &  out  )  const 
ORROctree::Node* pcl::recognition::ORROctree::getRandomFullLeafOnSphere  (  const float *  p, 
float  radius  
)  const 
Randomly chooses and returns a full leaf that is intersected by the sphere with center 'p' and 'radius'.
Returns NULL if no leaf is intersected by that sphere.

inline 
Definition at line 415 of file orr_octree.h.

inline 
Definition at line 430 of file orr_octree.h.

inline 
Definition at line 433 of file orr_octree.h.
References pcl::recognition::ORROctree::Node::getCenter(), and pcl::recognition::ORROctree::Node::makeNeighbors().

protected 
Definition at line 471 of file orr_octree.h.

protected 
Definition at line 474 of file orr_octree.h.

protected 
Definition at line 473 of file orr_octree.h.

protected 
Definition at line 472 of file orr_octree.h.

protected 
Definition at line 471 of file orr_octree.h.