Loading...
Searching...
No Matches
octree_poisson.h
/*
Copyright (c) 2006, Michael Kazhdan and Matthew Bolitho
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of
conditions and the following disclaimer. Redistributions in binary form must reproduce
the above copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the distribution.
Neither the name of the Johns Hopkins University nor the names of its contributors
may be used to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
*/
#ifndef OCT_NODE_INCLUDED
#define OCT_NODE_INCLUDED
#if defined __GNUC__
# pragma GCC system_header
#endif
#include "allocator.h"
#include "binary_node.h"
#include "marching_cubes_poisson.h"
#define DIMENSION 3
namespace pcl
{
namespace poisson
{
template< class NodeData , class Real=float >
class OctNode
{
private:
static int UseAlloc;
class AdjacencyCountFunction
{
public:
int count;
void Function( const OctNode<NodeData,Real>* node1 , const OctNode<NodeData,Real>* node2 );
};
template<class NodeAdjacencyFunction>
void __processNodeFaces(OctNode* node,NodeAdjacencyFunction* F,int cIndex1,int cIndex2,int cIndex3,int cIndex4);
template<class NodeAdjacencyFunction>
void __processNodeEdges(OctNode* node,NodeAdjacencyFunction* F,int cIndex1,int cIndex2);
template<class NodeAdjacencyFunction>
void __processNodeNodes(OctNode* node,NodeAdjacencyFunction* F);
template<class NodeAdjacencyFunction>
static void __ProcessNodeAdjacentNodes(int dx,int dy,int dz,OctNode* node1,int radius1,OctNode* node2,int radius2,int cWidth2,NodeAdjacencyFunction* F);
template<class TerminatingNodeAdjacencyFunction>
static void __ProcessTerminatingNodeAdjacentNodes(int dx,int dy,int dz,OctNode* node1,int radius1,OctNode* node2,int radius2,int cWidth2,TerminatingNodeAdjacencyFunction* F);
template<class PointAdjacencyFunction>
static void __ProcessPointAdjacentNodes(int dx,int dy,int dz,OctNode* node2,int radius2,int cWidth2,PointAdjacencyFunction* F);
template<class NodeAdjacencyFunction>
static void __ProcessFixedDepthNodeAdjacentNodes(int dx,int dy,int dz,OctNode* node1,int radius1,OctNode* node2,int radius2,int cWidth2,int depth,NodeAdjacencyFunction* F);
template<class NodeAdjacencyFunction>
static void __ProcessMaxDepthNodeAdjacentNodes(int dx,int dy,int dz,OctNode* node1,int radius1,OctNode* node2,int radius2,int cWidth2,int depth,NodeAdjacencyFunction* F);
// This is made private because the division by two has been pulled out.
static inline int Overlap(int c1,int c2,int c3,int dWidth);
inline static int ChildOverlap(int dx,int dy,int dz,int d,int cRadius2);
const OctNode* __faceNeighbor(int dir,int off) const;
const OctNode* __edgeNeighbor(int o,const int i[2],const int idx[2]) const;
OctNode* __faceNeighbor(int dir,int off,int forceChildren);
OctNode* __edgeNeighbor(int o,const int i[2],const int idx[2],int forceChildren);
public:
static const int DepthShift,OffsetShift,OffsetShift1,OffsetShift2,OffsetShift3;
static const int DepthMask,OffsetMask;
static Allocator<OctNode> internalAllocator;
static int UseAllocator(void);
static void SetAllocator(int blockSize);
OctNode* parent;
OctNode* children;
short d , off[DIMENSION];
NodeData nodeData;
OctNode(void);
~OctNode(void);
int initChildren(void);
void depthAndOffset(int& depth,int offset[DIMENSION]) const;
int depth(void) const;
static inline void DepthAndOffset(const long long& index,int& depth,int offset[DIMENSION]);
static inline void CenterAndWidth(const long long& index,Point3D<Real>& center,Real& width);
static inline int Depth(const long long& index);
static inline void Index(int depth,const int offset[3],short& d,short off[DIMENSION]);
void centerAndWidth( Point3D<Real>& center , Real& width ) const;
bool isInside( Point3D< Real > p ) const;
int leaves(void) const;
int maxDepthLeaves(int maxDepth) const;
int nodes(void) const;
int maxDepth(void) const;
const OctNode* root(void) const;
const OctNode* nextLeaf(const OctNode* currentLeaf=NULL) const;
OctNode* nextLeaf(OctNode* currentLeaf=NULL);
const OctNode* nextNode(const OctNode* currentNode=NULL) const;
OctNode* nextNode(OctNode* currentNode=NULL);
const OctNode* nextBranch(const OctNode* current) const;
OctNode* nextBranch(OctNode* current);
const OctNode* prevBranch(const OctNode* current) const;
OctNode* prevBranch(OctNode* current);
void setFullDepth(int maxDepth);
void printLeaves(void) const;
void printRange(void) const;
template<class NodeAdjacencyFunction>
void processNodeFaces(OctNode* node,NodeAdjacencyFunction* F,int fIndex,int processCurrent=1);
template<class NodeAdjacencyFunction>
void processNodeEdges(OctNode* node,NodeAdjacencyFunction* F,int eIndex,int processCurrent=1);
template<class NodeAdjacencyFunction>
void processNodeCorners(OctNode* node,NodeAdjacencyFunction* F,int cIndex,int processCurrent=1);
template<class NodeAdjacencyFunction>
void processNodeNodes(OctNode* node,NodeAdjacencyFunction* F,int processCurrent=1);
template<class NodeAdjacencyFunction>
static void ProcessNodeAdjacentNodes(int maxDepth,OctNode* node1,int width1,OctNode* node2,int width2,NodeAdjacencyFunction* F,int processCurrent=1);
template<class NodeAdjacencyFunction>
static void ProcessNodeAdjacentNodes(int dx,int dy,int dz,OctNode* node1,int radius1,OctNode* node2,int radius2,int width2,NodeAdjacencyFunction* F,int processCurrent=1);
template<class TerminatingNodeAdjacencyFunction>
static void ProcessTerminatingNodeAdjacentNodes(int maxDepth,OctNode* node1,int width1,OctNode* node2,int width2,TerminatingNodeAdjacencyFunction* F,int processCurrent=1);
template<class TerminatingNodeAdjacencyFunction>
static void ProcessTerminatingNodeAdjacentNodes(int dx,int dy,int dz,OctNode* node1,int radius1,OctNode* node2,int radius2,int width2,TerminatingNodeAdjacencyFunction* F,int processCurrent=1);
template<class PointAdjacencyFunction>
static void ProcessPointAdjacentNodes(int maxDepth,const int center1[3],OctNode* node2,int width2,PointAdjacencyFunction* F,int processCurrent=1);
template<class PointAdjacencyFunction>
static void ProcessPointAdjacentNodes(int dx,int dy,int dz,OctNode* node2,int radius2,int width2,PointAdjacencyFunction* F,int processCurrent=1);
template<class NodeAdjacencyFunction>
static void ProcessFixedDepthNodeAdjacentNodes(int maxDepth,OctNode* node1,int width1,OctNode* node2,int width2,int depth,NodeAdjacencyFunction* F,int processCurrent=1);
template<class NodeAdjacencyFunction>
static void ProcessFixedDepthNodeAdjacentNodes(int dx,int dy,int dz,OctNode* node1,int radius1,OctNode* node2,int radius2,int width2,int depth,NodeAdjacencyFunction* F,int processCurrent=1);
template<class NodeAdjacencyFunction>
static void ProcessMaxDepthNodeAdjacentNodes(int maxDepth,OctNode* node1,int width1,OctNode* node2,int width2,int depth,NodeAdjacencyFunction* F,int processCurrent=1);
template<class NodeAdjacencyFunction>
static void ProcessMaxDepthNodeAdjacentNodes(int dx,int dy,int dz,OctNode* node1,int radius1,OctNode* node2,int radius2,int width2,int depth,NodeAdjacencyFunction* F,int processCurrent=1);
static int CornerIndex(const Point3D<Real>& center,const Point3D<Real> &p);
OctNode* faceNeighbor(int faceIndex,int forceChildren=0);
const OctNode* faceNeighbor(int faceIndex) const;
OctNode* edgeNeighbor(int edgeIndex,int forceChildren=0);
const OctNode* edgeNeighbor(int edgeIndex) const;
OctNode* cornerNeighbor(int cornerIndex,int forceChildren=0);
const OctNode* cornerNeighbor(int cornerIndex) const;
OctNode* getNearestLeaf(const Point3D<Real>& p);
const OctNode* getNearestLeaf(const Point3D<Real>& p) const;
static int CommonEdge(const OctNode* node1,int eIndex1,const OctNode* node2,int eIndex2);
static int CompareForwardDepths(const void* v1,const void* v2);
static int CompareByDepthAndXYZ( const void* v1 , const void* v2 );
static int CompareByDepthAndZIndex( const void* v1 , const void* v2 );
static int CompareForwardPointerDepths(const void* v1,const void* v2);
static int CompareBackwardDepths(const void* v1,const void* v2);
static int CompareBackwardPointerDepths(const void* v1,const void* v2);
template<class NodeData2>
OctNode& operator = (const OctNode<NodeData2,Real>& node);
static inline int Overlap2(const int &depth1,const int offSet1[DIMENSION],const Real& multiplier1,const int &depth2,const int offSet2[DIMENSION],const Real& multiplier2);
int write(const char* fileName) const;
int write(FILE* fp) const;
int read(const char* fileName);
int read(FILE* fp);
class Neighbors3
{
public:
OctNode* neighbors[3][3][3];
Neighbors3( void );
void clear( void );
};
class NeighborKey3
{
public:
Neighbors3* neighbors;
NeighborKey3( void );
~NeighborKey3( void );
void set( int depth );
Neighbors3& setNeighbors( OctNode* root , Point3D< Real > p , int d );
Neighbors3& getNeighbors( OctNode* root , Point3D< Real > p , int d );
Neighbors3& setNeighbors( OctNode* node , bool flags[3][3][3] );
Neighbors3& setNeighbors( OctNode* node );
Neighbors3& getNeighbors( OctNode* node );
};
class ConstNeighbors3
{
public:
const OctNode* neighbors[3][3][3];
ConstNeighbors3( void );
void clear( void );
};
class ConstNeighborKey3
{
public:
ConstNeighbors3* neighbors;
ConstNeighborKey3(void);
~ConstNeighborKey3(void);
void set(int depth);
ConstNeighbors3& getNeighbors( const OctNode* node );
ConstNeighbors3& getNeighbors( const OctNode* node , int minDepth );
};
class Neighbors5
{
public:
OctNode* neighbors[5][5][5];
Neighbors5( void );
void clear( void );
};
class ConstNeighbors5
{
public:
const OctNode* neighbors[5][5][5];
ConstNeighbors5( void );
void clear( void );
};
class NeighborKey5
{
int _depth;
public:
Neighbors5* neighbors;
NeighborKey5( void );
~NeighborKey5( void );
void set( int depth );
Neighbors5& getNeighbors( OctNode* node );
Neighbors5& setNeighbors( OctNode* node , int xStart=0 , int xEnd=5 , int yStart=0 , int yEnd=5 , int zStart=0 , int zEnd=5 );
};
class ConstNeighborKey5
{
int _depth;
public:
ConstNeighbors5* neighbors;
ConstNeighborKey5( void );
~ConstNeighborKey5( void );
void set( int depth );
ConstNeighbors5& getNeighbors( const OctNode* node );
};
void centerIndex(int maxDepth,int index[DIMENSION]) const;
int width(int maxDepth) const;
};
}
}
#include "octree_poisson.hpp"
#endif // OCT_NODE
pcl::poisson::Allocator
This templated class assists in memory allocation and is well suited for instances when it is known t...
Definition allocator.h:50
pcl::poisson::OctNode::ConstNeighborKey3::getNeighbors
ConstNeighbors3 & getNeighbors(const OctNode *node)
pcl::poisson::OctNode::ConstNeighborKey3::neighbors
ConstNeighbors3 * neighbors
Definition octree_poisson.h:225
pcl::poisson::OctNode::ConstNeighborKey3::set
void set(int depth)
Definition octree_poisson.hpp:1548
pcl::poisson::OctNode::ConstNeighborKey3::~ConstNeighborKey3
~ConstNeighborKey3(void)
Definition octree_poisson.hpp:1542
pcl::poisson::OctNode::ConstNeighborKey3::getNeighbors
ConstNeighbors3 & getNeighbors(const OctNode *node, int minDepth)
pcl::poisson::OctNode::ConstNeighborKey3::ConstNeighborKey3
ConstNeighborKey3(void)
Definition octree_poisson.hpp:1539
pcl::poisson::OctNode::ConstNeighborKey5::~ConstNeighborKey5
~ConstNeighborKey5(void)
Definition octree_poisson.hpp:1713
pcl::poisson::OctNode::ConstNeighborKey5::ConstNeighborKey5
ConstNeighborKey5(void)
Definition octree_poisson.hpp:1699
pcl::poisson::OctNode::ConstNeighborKey5::set
void set(int depth)
Definition octree_poisson.hpp:1730
pcl::poisson::OctNode::ConstNeighborKey5::neighbors
ConstNeighbors5 * neighbors
Definition octree_poisson.h:266
pcl::poisson::OctNode::ConstNeighborKey5::getNeighbors
ConstNeighbors5 & getNeighbors(const OctNode *node)
Definition octree_poisson.hpp:1902
pcl::poisson::OctNode::ConstNeighbors3
Definition octree_poisson.h:216
pcl::poisson::OctNode::ConstNeighbors3::neighbors
const OctNode * neighbors[3][3][3]
Definition octree_poisson.h:218
pcl::poisson::OctNode::ConstNeighbors3::ConstNeighbors3
ConstNeighbors3(void)
Definition octree_poisson.hpp:1531
pcl::poisson::OctNode::ConstNeighbors3::clear
void clear(void)
Definition octree_poisson.hpp:1534
pcl::poisson::OctNode::ConstNeighbors5
Definition octree_poisson.h:242
pcl::poisson::OctNode::ConstNeighbors5::neighbors
const OctNode * neighbors[5][5][5]
Definition octree_poisson.h:244
pcl::poisson::OctNode::ConstNeighbors5::ConstNeighbors5
ConstNeighbors5(void)
Definition octree_poisson.hpp:1677
pcl::poisson::OctNode::ConstNeighbors5::clear
void clear(void)
Definition octree_poisson.hpp:1686
pcl::poisson::OctNode::NeighborKey3::setNeighbors
Neighbors3 & setNeighbors(OctNode *node, bool flags[3][3][3])
pcl::poisson::OctNode::NeighborKey3::~NeighborKey3
~NeighborKey3(void)
Definition octree_poisson.hpp:1146
pcl::poisson::OctNode::NeighborKey3::neighbors
Neighbors3 * neighbors
Definition octree_poisson.h:203
pcl::poisson::OctNode::NeighborKey3::setNeighbors
Neighbors3 & setNeighbors(OctNode *node)
pcl::poisson::OctNode::NeighborKey3::getNeighbors
Neighbors3 & getNeighbors(OctNode *node)
pcl::poisson::OctNode::NeighborKey3::set
void set(int depth)
Definition octree_poisson.hpp:1153
pcl::poisson::OctNode::NeighborKey3::NeighborKey3
NeighborKey3(void)
Definition octree_poisson.hpp:1143
pcl::poisson::OctNode::NeighborKey3::getNeighbors
Neighbors3 & getNeighbors(OctNode *root, Point3D< Real > p, int d)
pcl::poisson::OctNode::NeighborKey3::setNeighbors
Neighbors3 & setNeighbors(OctNode *root, Point3D< Real > p, int d)
pcl::poisson::OctNode::NeighborKey5::neighbors
Neighbors5 * neighbors
Definition octree_poisson.h:253
pcl::poisson::OctNode::NeighborKey5::setNeighbors
Neighbors5 & setNeighbors(OctNode *node, int xStart=0, int xEnd=5, int yStart=0, int yEnd=5, int zStart=0, int zEnd=5)
Definition octree_poisson.hpp:1857
pcl::poisson::OctNode::NeighborKey5::~NeighborKey5
~NeighborKey5(void)
Definition octree_poisson.hpp:1706
pcl::poisson::OctNode::NeighborKey5::set
void set(int depth)
Definition octree_poisson.hpp:1720
pcl::poisson::OctNode::NeighborKey5::getNeighbors
Neighbors5 & getNeighbors(OctNode *node)
Definition octree_poisson.hpp:1740
pcl::poisson::OctNode::NeighborKey5::NeighborKey5
NeighborKey5(void)
Definition octree_poisson.hpp:1692
pcl::poisson::OctNode::Neighbors3
Definition octree_poisson.h:194
pcl::poisson::OctNode::Neighbors3::Neighbors3
Neighbors3(void)
Definition octree_poisson.hpp:1135
pcl::poisson::OctNode::Neighbors3::clear
void clear(void)
Definition octree_poisson.hpp:1138
pcl::poisson::OctNode::Neighbors3::neighbors
OctNode * neighbors[3][3][3]
Definition octree_poisson.h:196
pcl::poisson::OctNode::Neighbors5
Definition octree_poisson.h:235
pcl::poisson::OctNode::Neighbors5::neighbors
OctNode * neighbors[5][5][5]
Definition octree_poisson.h:237
pcl::poisson::OctNode::Neighbors5::clear
void clear(void)
Definition octree_poisson.hpp:1680
pcl::poisson::OctNode::Neighbors5::Neighbors5
Neighbors5(void)
Definition octree_poisson.hpp:1675
pcl::poisson::OctNode::d
short d
Definition octree_poisson.h:94
pcl::poisson::OctNode< class TreeNodeData, Real >::internalAllocator
static Allocator< OctNode > internalAllocator
Definition octree_poisson.h:88
pcl::poisson::OctNode::maxDepthLeaves
int maxDepthLeaves(int maxDepth) const
Definition octree_poisson.hpp:214
pcl::poisson::OctNode< class TreeNodeData, Real >::OffsetShift1
static const int OffsetShift1
Definition octree_poisson.h:85
pcl::poisson::OctNode::depthAndOffset
void depthAndOffset(int &depth, int offset[DIMENSION]) const
Definition octree_poisson.hpp:129
pcl::poisson::OctNode< class TreeNodeData, Real >::maxDepth
int maxDepth(void) const
pcl::poisson::OctNode::ProcessNodeAdjacentNodes
static void ProcessNodeAdjacentNodes(int dx, int dy, int dz, OctNode *node1, int radius1, OctNode *node2, int radius2, int width2, NodeAdjacencyFunction *F, int processCurrent=1)
pcl::poisson::OctNode::ProcessNodeAdjacentNodes
static void ProcessNodeAdjacentNodes(int maxDepth, OctNode *node1, int width1, OctNode *node2, int width2, NodeAdjacencyFunction *F, int processCurrent=1)
Definition octree_poisson.hpp:404
pcl::poisson::OctNode::ProcessMaxDepthNodeAdjacentNodes
static void ProcessMaxDepthNodeAdjacentNodes(int dx, int dy, int dz, OctNode *node1, int radius1, OctNode *node2, int radius2, int width2, int depth, NodeAdjacencyFunction *F, int processCurrent=1)
pcl::poisson::OctNode< class TreeNodeData, Real >::OffsetShift2
static const int OffsetShift2
Definition octree_poisson.h:85
pcl::poisson::OctNode::faceNeighbor
const OctNode * faceNeighbor(int faceIndex) const
Definition octree_poisson.hpp:910
pcl::poisson::OctNode::CompareBackwardDepths
static int CompareBackwardDepths(const void *v1, const void *v2)
Definition octree_poisson.hpp:879
pcl::poisson::OctNode::CompareForwardDepths
static int CompareForwardDepths(const void *v1, const void *v2)
Definition octree_poisson.hpp:822
pcl::poisson::OctNode::prevBranch
const OctNode * prevBranch(const OctNode *current) const
Definition octree_poisson.hpp:247
pcl::poisson::OctNode::write
int write(const char *fileName) const
Definition octree_poisson.hpp:1944
pcl::poisson::OctNode< class TreeNodeData, Real >::OffsetMask
static const int OffsetMask
Definition octree_poisson.h:86
pcl::poisson::OctNode::leaves
int leaves(void) const
Definition octree_poisson.hpp:204
pcl::poisson::OctNode::processNodeNodes
void processNodeNodes(OctNode *node, NodeAdjacencyFunction *F, int processCurrent=1)
Definition octree_poisson.hpp:321
pcl::poisson::OctNode::isInside
bool isInside(Point3D< Real > p) const
Definition octree_poisson.hpp:160
pcl::poisson::OctNode::ProcessMaxDepthNodeAdjacentNodes
static void ProcessMaxDepthNodeAdjacentNodes(int maxDepth, OctNode *node1, int width1, OctNode *node2, int width2, int depth, NodeAdjacencyFunction *F, int processCurrent=1)
pcl::poisson::OctNode::DepthAndOffset
static void DepthAndOffset(const long long &index, int &depth, int offset[DIMENSION])
Definition octree_poisson.hpp:139
pcl::poisson::OctNode::ProcessFixedDepthNodeAdjacentNodes
static void ProcessFixedDepthNodeAdjacentNodes(int dx, int dy, int dz, OctNode *node1, int radius1, OctNode *node2, int radius2, int width2, int depth, NodeAdjacencyFunction *F, int processCurrent=1)
pcl::poisson::OctNode::nextLeaf
OctNode * nextLeaf(OctNode *currentLeaf=NULL)
Definition octree_poisson.hpp:276
pcl::poisson::OctNode::CenterAndWidth
static void CenterAndWidth(const long long &index, Point3D< Real > &center, Real &width)
Definition octree_poisson.hpp:170
pcl::poisson::OctNode::processNodeEdges
void processNodeEdges(OctNode *node, NodeAdjacencyFunction *F, int eIndex, int processCurrent=1)
Definition octree_poisson.hpp:339
pcl::poisson::OctNode::depth
int depth(void) const
Definition octree_poisson.hpp:137
pcl::poisson::OctNode::ProcessTerminatingNodeAdjacentNodes
static void ProcessTerminatingNodeAdjacentNodes(int dx, int dy, int dz, OctNode *node1, int radius1, OctNode *node2, int radius2, int width2, TerminatingNodeAdjacencyFunction *F, int processCurrent=1)
pcl::poisson::OctNode::read
int read(const char *fileName)
Definition octree_poisson.hpp:1960
pcl::poisson::OctNode::Depth
static int Depth(const long long &index)
Definition octree_poisson.hpp:147
pcl::poisson::OctNode::CompareForwardPointerDepths
static int CompareForwardPointerDepths(const void *v1, const void *v2)
Definition octree_poisson.hpp:862
pcl::poisson::OctNode::getNearestLeaf
OctNode * getNearestLeaf(const Point3D< Real > &p)
Definition octree_poisson.hpp:721
pcl::poisson::OctNode::nodes
int nodes(void) const
Definition octree_poisson.hpp:194
pcl::poisson::OctNode::cornerNeighbor
const OctNode * cornerNeighbor(int cornerIndex) const
Definition octree_poisson.hpp:1030
pcl::poisson::OctNode::CornerIndex
static int CornerIndex(const Point3D< Real > &center, const Point3D< Real > &p)
Definition octree_poisson.hpp:797
pcl::poisson::OctNode::Overlap2
static int Overlap2(const int &depth1, const int offSet1[DIMENSION], const Real &multiplier1, const int &depth2, const int offSet2[DIMENSION], const Real &multiplier2)
Definition octree_poisson.hpp:889
pcl::poisson::OctNode::edgeNeighbor
OctNode * edgeNeighbor(int edgeIndex, int forceChildren=0)
Definition octree_poisson.hpp:942
pcl::poisson::OctNode::read
int read(FILE *fp)
Definition octree_poisson.hpp:1969
pcl::poisson::OctNode< class TreeNodeData, Real >::OffsetShift
static const int OffsetShift
Definition octree_poisson.h:85
pcl::poisson::OctNode::nextBranch
const OctNode * nextBranch(const OctNode *current) const
Definition octree_poisson.hpp:232
pcl::poisson::OctNode::OctNode
OctNode(void)
Definition octree_poisson.hpp:68
pcl::poisson::OctNode::off
short off[DIMENSION]
Definition octree_poisson.h:94
pcl::poisson::OctNode::ProcessPointAdjacentNodes
static void ProcessPointAdjacentNodes(int maxDepth, const int center1[3], OctNode *node2, int width2, PointAdjacencyFunction *F, int processCurrent=1)
Definition octree_poisson.hpp:453
pcl::poisson::OctNode::setFullDepth
void setFullDepth(int maxDepth)
Definition octree_poisson.hpp:80
pcl::poisson::OctNode::ProcessTerminatingNodeAdjacentNodes
static void ProcessTerminatingNodeAdjacentNodes(int maxDepth, OctNode *node1, int width1, OctNode *node2, int width2, TerminatingNodeAdjacencyFunction *F, int processCurrent=1)
Definition octree_poisson.hpp:428
pcl::poisson::OctNode::nextNode
const OctNode * nextNode(const OctNode *currentNode=NULL) const
Definition octree_poisson.hpp:289
pcl::poisson::OctNode::cornerNeighbor
OctNode * cornerNeighbor(int cornerIndex, int forceChildren=0)
Definition octree_poisson.hpp:1079
pcl::poisson::OctNode::ProcessPointAdjacentNodes
static void ProcessPointAdjacentNodes(int dx, int dy, int dz, OctNode *node2, int radius2, int width2, PointAdjacencyFunction *F, int processCurrent=1)
pcl::poisson::OctNode::write
int write(FILE *fp) const
Definition octree_poisson.hpp:1953
pcl::poisson::OctNode< class TreeNodeData, Real >::width
int width(int maxDepth) const
pcl::poisson::OctNode::prevBranch
OctNode * prevBranch(OctNode *current)
Definition octree_poisson.hpp:255
pcl::poisson::OctNode::getNearestLeaf
const OctNode * getNearestLeaf(const Point3D< Real > &p) const
Definition octree_poisson.hpp:744
pcl::poisson::OctNode::printLeaves
void printLeaves(void) const
pcl::poisson::OctNode::~OctNode
~OctNode(void)
Definition octree_poisson.hpp:74
pcl::poisson::OctNode::processNodeFaces
void processNodeFaces(OctNode *node, NodeAdjacencyFunction *F, int fIndex, int processCurrent=1)
Definition octree_poisson.hpp:328
pcl::poisson::OctNode::CommonEdge
static int CommonEdge(const OctNode *node1, int eIndex1, const OctNode *node2, int eIndex2)
Definition octree_poisson.hpp:762
pcl::poisson::OctNode::SetAllocator
static void SetAllocator(int blockSize)
Definition octree_poisson.hpp:54
pcl::poisson::OctNode::edgeNeighbor
const OctNode * edgeNeighbor(int edgeIndex) const
Definition octree_poisson.hpp:954
pcl::poisson::OctNode::root
const OctNode * root(void) const
Definition octree_poisson.hpp:225
pcl::poisson::OctNode::CompareByDepthAndZIndex
static int CompareByDepthAndZIndex(const void *v1, const void *v2)
Definition octree_poisson.hpp:847
pcl::poisson::OctNode::operator=
OctNode & operator=(const OctNode< NodeData2, Real > &node)
pcl::poisson::OctNode::centerAndWidth
void centerAndWidth(Point3D< Real > &center, Real &width) const
Definition octree_poisson.hpp:149
pcl::poisson::OctNode::centerIndex
void centerIndex(int maxDepth, int index[DIMENSION]) const
Definition octree_poisson.hpp:1990
pcl::poisson::OctNode::nextNode
OctNode * nextNode(OctNode *currentNode=NULL)
Definition octree_poisson.hpp:297
pcl::poisson::OctNode::nextLeaf
const OctNode * nextLeaf(const OctNode *currentLeaf=NULL) const
Definition octree_poisson.hpp:263
pcl::poisson::OctNode< class TreeNodeData, Real >::parent
OctNode * parent
Definition octree_poisson.h:92
pcl::poisson::OctNode::CompareByDepthAndXYZ
static int CompareByDepthAndXYZ(const void *v1, const void *v2)
Definition octree_poisson.hpp:827
pcl::poisson::OctNode< class TreeNodeData, Real >::children
OctNode * children
Definition octree_poisson.h:93
pcl::poisson::OctNode::ProcessFixedDepthNodeAdjacentNodes
static void ProcessFixedDepthNodeAdjacentNodes(int maxDepth, OctNode *node1, int width1, OctNode *node2, int width2, int depth, NodeAdjacencyFunction *F, int processCurrent=1)
pcl::poisson::OctNode::CompareBackwardPointerDepths
static int CompareBackwardPointerDepths(const void *v1, const void *v2)
Definition octree_poisson.hpp:884
pcl::poisson::OctNode< class TreeNodeData, Real >::OffsetShift3
static const int OffsetShift3
Definition octree_poisson.h:85
pcl::poisson::OctNode::UseAllocator
static int UseAllocator(void)
Definition octree_poisson.hpp:65
pcl::poisson::OctNode::Index
static void Index(int depth, const int offset[3], short &d, short off[DIMENSION])
Definition octree_poisson.hpp:121
pcl::poisson::OctNode< class TreeNodeData, Real >::nodeData
class TreeNodeData nodeData
Definition octree_poisson.h:95
pcl::poisson::OctNode::printRange
void printRange(void) const
Definition octree_poisson.hpp:305
pcl::poisson::OctNode< class TreeNodeData, Real >::DepthShift
static const int DepthShift
Definition octree_poisson.h:85
pcl::poisson::OctNode< class TreeNodeData, Real >::DepthMask
static const int DepthMask
Definition octree_poisson.h:86
pcl::poisson::OctNode::faceNeighbor
OctNode * faceNeighbor(int faceIndex, int forceChildren=0)
Definition octree_poisson.hpp:908
pcl::poisson::OctNode::processNodeCorners
void processNodeCorners(OctNode *node, NodeAdjacencyFunction *F, int cIndex, int processCurrent=1)
Definition octree_poisson.hpp:350
pcl::poisson::OctNode::initChildren
int initChildren(void)
Definition octree_poisson.hpp:89
pcl::poisson::OctNode::nextBranch
OctNode * nextBranch(OctNode *current)
Definition octree_poisson.hpp:240
pcl::poisson
Definition allocator.h:36
pcl::poisson::Real
float Real
Definition multi_grid_octree_data.h:85
pcl
Definition convolution.h:46
pcl::poisson::Point3D
Definition geometry.h:51