DGtal 1.4.0
|
Aim: This class is a data structure that subdivides a rectangular domains into cubical domains of size \( r^n \) in order to store points into different bins (each cubical domain is a bin, characterized by one coordinate). This data structure may be used for proximity queries, generally to get the points at distance r from a given point. More...
#include <DGtal/geometry/tools/SpatialCubicalSubdivision.h>
Public Types | |
typedef TSpace | Space |
typedef Space::Point | Point |
typedef Space::Vector | Vector |
typedef Point::Coordinate | Coordinate |
typedef HyperRectDomain< Space > | Domain |
typedef std::vector< Point > | Storage |
typedef ImageContainerBySTLVector< Domain, Storage * > | StorageArray |
typedef StorageArray::ConstRange | BinConstRange |
Public Member Functions | |
~SpatialCubicalSubdivision () | |
SpatialCubicalSubdivision (const SpatialCubicalSubdivision &other) | |
SpatialCubicalSubdivision (Point lo, Point up, Coordinate size) | |
const Domain & | domain () const |
const Domain & | binDomain () const |
Point | bin (Point p) const |
Point | lowest (Point b) const |
Point | uppermost (Point b) const |
void | push (const Point &p) |
template<typename PointConstIterator > | |
void | push (PointConstIterator it, PointConstIterator itE) |
template<typename PointPredicate > | |
void | getPoints (std::vector< Point > &pts, Point bin_lo, Point bin_up, const PointPredicate &pred) const |
void | getPoints (std::vector< Point > &pts, Point bin_lo, Point bin_up) const |
void | selfDisplay (std::ostream &out) const |
bool | isValid () const |
Protected Attributes | |
Domain | myDomain |
the rectangular domain representing the useful points of the space. | |
Coordinate | mySize |
the edge size of each bin. | |
StorageArray | myArray |
Private Member Functions | |
BOOST_CONCEPT_ASSERT ((concepts::CSpace< TSpace >)) | |
SpatialCubicalSubdivision & | operator= (const SpatialCubicalSubdivision &other) |
Private Attributes | |
Point | myDiag |
a precomputed point to improve performance of uppermost() method. | |
Aim: This class is a data structure that subdivides a rectangular domains into cubical domains of size \( r^n \) in order to store points into different bins (each cubical domain is a bin, characterized by one coordinate). This data structure may be used for proximity queries, generally to get the points at distance r from a given point.
Description of template class 'SpatialCubicalSubdivision'
Bins are characterized by one Point and are organized as a rectangular domain with lowest bin at coordinates (0,...,0).
TSpace | the digital space, a model of CSpace. |
Model of CopyConstructible
Definition at line 72 of file SpatialCubicalSubdivision.h.
typedef StorageArray::ConstRange DGtal::SpatialCubicalSubdivision< TSpace >::BinConstRange |
Definition at line 83 of file SpatialCubicalSubdivision.h.
typedef Point::Coordinate DGtal::SpatialCubicalSubdivision< TSpace >::Coordinate |
Definition at line 79 of file SpatialCubicalSubdivision.h.
typedef HyperRectDomain<Space> DGtal::SpatialCubicalSubdivision< TSpace >::Domain |
Definition at line 80 of file SpatialCubicalSubdivision.h.
typedef Space::Point DGtal::SpatialCubicalSubdivision< TSpace >::Point |
Definition at line 77 of file SpatialCubicalSubdivision.h.
typedef TSpace DGtal::SpatialCubicalSubdivision< TSpace >::Space |
Definition at line 76 of file SpatialCubicalSubdivision.h.
typedef std::vector<Point> DGtal::SpatialCubicalSubdivision< TSpace >::Storage |
Definition at line 81 of file SpatialCubicalSubdivision.h.
typedef ImageContainerBySTLVector<Domain,Storage*> DGtal::SpatialCubicalSubdivision< TSpace >::StorageArray |
Definition at line 82 of file SpatialCubicalSubdivision.h.
typedef Space::Vector DGtal::SpatialCubicalSubdivision< TSpace >::Vector |
Definition at line 78 of file SpatialCubicalSubdivision.h.
DGtal::SpatialCubicalSubdivision< TSpace >::~SpatialCubicalSubdivision | ( | ) |
Destructor.
DGtal::SpatialCubicalSubdivision< TSpace >::SpatialCubicalSubdivision | ( | const SpatialCubicalSubdivision< TSpace > & | other | ) |
Copy constructor.
other | the object to clone. |
DGtal::SpatialCubicalSubdivision< TSpace >::SpatialCubicalSubdivision | ( | Point | lo, |
Point | up, | ||
Coordinate | size ) |
Constructor from rectangular domain given by lowest and uppermost point.
lo | the lowest point of the domain of interest. |
up | the uppermost point of the domain of interest. |
size | the edge size of each cubical bin (an integer >= 2 ). |
Point DGtal::SpatialCubicalSubdivision< TSpace >::bin | ( | Point | p | ) | const |
p | any point within domain(). |
const Domain & DGtal::SpatialCubicalSubdivision< TSpace >::binDomain | ( | ) | const |
|
private |
const Domain & DGtal::SpatialCubicalSubdivision< TSpace >::domain | ( | ) | const |
void DGtal::SpatialCubicalSubdivision< TSpace >::getPoints | ( | std::vector< Point > & | pts, |
Point | bin_lo, | ||
Point | bin_up ) const |
Pushs back in pts all the points in the bin domain [bin_lo, bin_up].
[out] | pts | the vector where points are pushed back for output. |
bin_lo | the lowest bin of the bin domain. | |
bin_up | the uppermost bin of the bin domain. |
void DGtal::SpatialCubicalSubdivision< TSpace >::getPoints | ( | std::vector< Point > & | pts, |
Point | bin_lo, | ||
Point | bin_up, | ||
const PointPredicate & | pred ) const |
Pushes back in pts all the points in the bin domain [bin_lo, bin_up] which satisfy the predicate pred.
PointPredicate | the type of a point predicate. |
[out] | pts | the vector where points are pushed back for output. |
bin_lo | the lowest bin of the bin domain. | |
bin_up | the uppermost bin of the bin domain. | |
pred | an arbitrary predicate on point. |
bool DGtal::SpatialCubicalSubdivision< TSpace >::isValid | ( | ) | const |
Checks the validity/consistency of the object.
Point DGtal::SpatialCubicalSubdivision< TSpace >::lowest | ( | Point | b | ) | const |
b | any valid bin of binDomain(). |
|
private |
Assignment.
other | the object to copy. |
void DGtal::SpatialCubicalSubdivision< TSpace >::push | ( | const Point & | p | ) |
Pushes the point p into its bin (beware, if you push the same point several times, there are as many copies of this point into the bin).
p | any point within domain(). |
void DGtal::SpatialCubicalSubdivision< TSpace >::push | ( | PointConstIterator | it, |
PointConstIterator | itE ) |
Pushes the range of points [it, itE) into the corresponding bins (beware, if you push the same point several times, there are as many copies of this point into its bin).
PointConstIterator | the type of const iterator on point. |
it | an iterator pointing at the beginning of the range. |
itE | an iterator pointing after the end of the range. |
void DGtal::SpatialCubicalSubdivision< TSpace >::selfDisplay | ( | std::ostream & | out | ) | const |
Writes/Displays the object on an output stream.
out | the output stream where the object is written. |
Point DGtal::SpatialCubicalSubdivision< TSpace >::uppermost | ( | Point | b | ) | const |
b | any valid bin of binDomain(). |
|
protected |
the image that associates to each bin its dyn. allocated vector of points. If 0, no point is stored in this bin.
Definition at line 202 of file SpatialCubicalSubdivision.h.
|
private |
a precomputed point to improve performance of uppermost() method.
Definition at line 206 of file SpatialCubicalSubdivision.h.
|
protected |
the rectangular domain representing the useful points of the space.
Definition at line 197 of file SpatialCubicalSubdivision.h.
|
protected |
the edge size of each bin.
Definition at line 199 of file SpatialCubicalSubdivision.h.