Multidimensional node used for intersection query. More...
#include <intersectionNode.h>

Public Types | |
enum | { Dim = _dim } |
typedef _IdContainer | IdContainer |
typedef _PointContainer | PointContainer |
Public Member Functions | |
const Point & | center () const |
Center of the current node. More... | |
unsigned int | idInRange (unsigned int i) const |
Access to the i-eme point in the node. Range limits are NOT tested! More... | |
NdNode (const PointContainer &points, IdContainer &ids, const Point &p=Point::Zero(), unsigned int begin=0, unsigned int end=0) | |
NdNode (const NdNode< Point, _dim, Scalar, _PointContainer, _IdContainer > &other) | |
NdNode< Point, _dim, Scalar, _PointContainer, _IdContainer > & | operator= (const NdNode< Point, _dim, Scalar, _PointContainer, _IdContainer > &rhs) |
const Point & | pointInRange (unsigned int i) const |
Access to the i-eme point in the node. Range limits are NOT tested! More... | |
unsigned int | rangeBegin () const |
First position in the id array defining the current instance range. More... | |
unsigned int | rangeEnd () const |
Last position in the id array defining the current instance range. More... | |
int | rangeLength () const |
Length of the range covered by this node in the id array. More... | |
void | split (std::vector< NdNode< Point, _dim, Scalar, _PointContainer, _IdContainer > > &childs, Scalar rootEdgeHalfLength) |
Split the node and compute child nodes. More... | |
~NdNode () | |
Static Public Member Functions | |
static NdNode< Point, _dim, Scalar, _PointContainer, _IdContainer > | buildUnitRootNode (const PointContainer &points, IdContainer &ids) |
Protected Attributes | |
unsigned int | _begin |
First element id in the node. More... | |
Point | _center |
Center of the node in the nd-space. More... | |
unsigned int | _end |
Last element id in the node. More... | |
IdContainer & | _ids |
Ids used to access _points[_ids[i]]. More... | |
const PointContainer & | _points |
Input points. More... | |
Detailed Description
template<class Point, int _dim, typename Scalar, class _PointContainer = std::vector<Point>, class _IdContainer = std::vector<unsigned int>>
class gr::NdNode< Point, _dim, Scalar, _PointContainer, _IdContainer >
Multidimensional node used for intersection query.
Each instance store references to the data arrays:
- const access to the input points
- writing access to the dereferencing id array
The working dimension is deduced from the Point class
Member Typedef Documentation
typedef _IdContainer gr::NdNode< Point, _dim, Scalar, _PointContainer, _IdContainer >::IdContainer |
typedef _PointContainer gr::NdNode< Point, _dim, Scalar, _PointContainer, _IdContainer >::PointContainer |
Member Enumeration Documentation
anonymous enum |
Constructor & Destructor Documentation
|
inline |

|
inline |

|
inline |
Member Function Documentation
|
inlinestatic |

|
inline |
Center of the current node.

|
inline |
Access to the i-eme point in the node. Range limits are NOT tested!

|
inline |

|
inline |
Access to the i-eme point in the node. Range limits are NOT tested!

|
inline |
First position in the id array defining the current instance range.

|
inline |
Last position in the id array defining the current instance range.

|
inline |
Length of the range covered by this node in the id array.

void gr::NdNode< Point, _dim, Scalar, _PointContainer, _IdContainer >::split | ( | std::vector< NdNode< Point, _dim, Scalar, _PointContainer, _IdContainer > > & | childs, |
Scalar | rootEdgeHalfLength | ||
) |
Split the node and compute child nodes.
Split the current node in 2^Dim childs using a regular grid.
- Note
- Childs are not stored
- Todo:
- See how to introduce dimension specialization (useful for 2D and 3D)
The IdContainer is updated to partially sort the input ids wrt to the childs range limits.
- Parameters
-
ChildContainer in:

Member Data Documentation
|
protected |
First element id in the node.
|
protected |
Center of the node in the nd-space.
|
protected |
Last element id in the node.
|
protected |
Ids used to access _points[_ids[i]].
|
protected |
Input points.
Needed to compute split
The documentation for this class was generated from the following file:
- /home/travis/build/STORM-IRIT/OpenGR/src/gr/accelerators/pairExtraction/intersectionNode.h