Super4PCS Library  V1.1.2(719f5c0)
GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, _Scalar > Struct Template Reference

Normal set indexed by a position in euclidean space. More...

+ Collaboration diagram for GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, _Scalar >:

Public Types

enum  MOVE_DIR { POSITIVE, NEGATIVE }
 
typedef std::array< std::vector< unsigned int >, Utils::POW(_ngSize, dim)> AngularGrid
 
using Scalar = _Scalar
 

Public Member Functions

 IndexedNormalSet (const Scalar epsilon)
 
virtual ~IndexedNormalSet ()
 
bool addElement (const Point &pos, const Point &normal, unsigned int id)
 Add a new couple pos/normal, and its associated id. More...
 
AngularGridangularGrid (const Point &p)
 
void getNeighbors (const Point &p, std::vector< unsigned int > &nei)
 Get closest points in euclidean space. More...
 
void getNeighbors (const Point &p, const Point &n, std::vector< unsigned int > &nei)
 Get closest points in euclidean an normal space. More...
 
void getNeighbors (const Point &p, const Point &n, Scalar alpha, std::vector< unsigned int > &nei, bool tryReverse=false)
 Get closest poitns in euclidean an normal space with angular deviation. More...
 

Detailed Description

template<class Point, int dim, int _ngSize, typename _Scalar>
struct GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, _Scalar >

Normal set indexed by a position in euclidean space.

The size used to hash euclidean coordinates is defined at runtime. The size used to hash the normals in an euclidean cell is defined at compile time

Loops over dimensions used to compute index values are unrolled at compile time.

Member Typedef Documentation

◆ AngularGrid

template<class Point , int dim, int _ngSize, typename _Scalar >
typedef std::array< std::vector<unsigned int>, Utils::POW(_ngSize, dim)> GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, _Scalar >::AngularGrid

◆ Scalar

template<class Point , int dim, int _ngSize, typename _Scalar >
using GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, _Scalar >::Scalar = _Scalar

Member Enumeration Documentation

◆ MOVE_DIR

template<class Point , int dim, int _ngSize, typename _Scalar >
enum GlobalRegistration::IndexedNormalSet::MOVE_DIR
Enumerator
POSITIVE 
NEGATIVE 

Constructor & Destructor Documentation

◆ IndexedNormalSet()

template<class Point , int dim, int _ngSize, typename _Scalar >
GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, _Scalar >::IndexedNormalSet ( const Scalar  epsilon)
inline
+ Here is the call graph for this function:

◆ ~IndexedNormalSet()

template<class Point , int dim, int _ngSize, typename Scalar >
GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, Scalar >::~IndexedNormalSet ( )
inlinevirtual

Member Function Documentation

◆ addElement()

template<class Point , int dim, int _ngSize, typename Scalar >
bool GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, Scalar >::addElement ( const Point &  pos,
const Point &  normal,
unsigned int  id 
)
inline

Add a new couple pos/normal, and its associated id.

◆ angularGrid()

template<class Point , int dim, int _ngSize, typename _Scalar >
AngularGrid* GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, _Scalar >::angularGrid ( const Point &  p)
inline
Returns
NULL if the grid does not exist or p is out of bound
+ Here is the call graph for this function:

◆ getNeighbors() [1/3]

template<class Point , int dim, int _ngSize, typename Scalar >
void GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, Scalar >::getNeighbors ( const Point &  p,
std::vector< unsigned int > &  nei 
)
inline

Get closest points in euclidean space.

◆ getNeighbors() [2/3]

template<class Point , int dim, int _ngSize, typename Scalar >
void GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, Scalar >::getNeighbors ( const Point &  p,
const Point &  n,
std::vector< unsigned int > &  nei 
)
inline

Get closest points in euclidean an normal space.

◆ getNeighbors() [3/3]

template<class Point , int dim, int _ngSize, typename Scalar >
void GlobalRegistration::IndexedNormalSet< Point, dim, _ngSize, Scalar >::getNeighbors ( const Point &  p,
const Point &  n,
Scalar  alpha,
std::vector< unsigned int > &  nei,
bool  tryReverse = false 
)
inline

Get closest poitns in euclidean an normal space with angular deviation.