BALL::HashGrid3< Item > Class Template Reference
[Three-dimensional Hash Grid]

#include <BALL/DATATYPE/hashGrid.h>

List of all members.


Classes

class  BoxIteratorTraits

Public Member Functions

Constructors and destructor
 HashGrid3 ()
 

Default constructor.


 HashGrid3 (const Vector3 &origin, Size dimension_x, Size dimension_y, Size dimension_z, float spacing_x, float spacing_y, float spacing_z)
 HashGrid3 (const Vector3 &origin, Size dimension_x, Size dimension_y, Size dimension_z, float spacing)
 HashGrid3 (const Vector3 &origin, const Vector3 &size, float spacing)
 HashGrid3 (const HashGrid3 &grid, bool deep=true)
 

Copy constructor.


virtual ~HashGrid3 ()
 

Destructor.


virtual void clear ()
 

Clears the whole grid.


void clear (Position x, Position y, Position z)
 

Clears the HashGridBox3 at position (x, y, z).


void clear (const Vector3 &vector)
 

Clears the HashGridBox3 at position vector.


void destroy ()
 

Destroys the grid (obsolete, only calls clear()).


void destroy (Position x, Position y, Position z)
 

Destroys a box of the grid (obsolete, only calls clear()).


void destroy (const Vector3 &vector)
 

Destroys a box of the grid (obsolete, only calls clear()).


Assignment
void set (const Vector3 &origin, const Vector3 &unit, Size dimension_x, Size dimension_y, Size dimension_z)
 

assigns the content of a hash grid (obsolete)


void set (const Vector3 &origin, float unit, Size size)
 

assigns the content of a hash grid (obsolete)


void set (const HashGrid3 &grid, bool deep=true)
 

assigns the content of a hash grid (obsolete)


const HashGrid3operator= (const HashGrid3 &grid)
 

Assignment operator.


void get (Vector3 &origin, Vector3 &unit, Size &dimension_x, Size &dimension_y, Size &dimension_z) const
void get (HashGrid3 &grid, bool deep=true) const
Accessors
Size countNonEmptyBoxes () const
 

Counts the non-empty boxes of a grid.


Size getSize () const
 

Returns the size of a grid, i. e. ?????


Vector3getOrigin ()
 

Returns the origin of the grid.


const Vector3getOrigin () const
 

Returns a const reference of the grid origin.


Vector3getUnit ()
 

Returns the unit of the grid.


const Vector3getUnit () const
 

Returns the unit of the grid (const version).


Size getSizeX () const
 

Get the x dimension of the grid.


Size getSizeY () const
 

Get the y dimension of the grid.


Size getSizeZ () const
 

Get the z dimension of the grid.


HashGridBox3< Item > * getBox (Position x, Position y, Position z)
 

Return the HashGridBox3 at position (x, y, z).


const HashGridBox3< Item > * getBox (Position x, Position y, Position z) const
 

Return the HashGridBox3 at position (x, y, z) (const version).


HashGridBox3< Item > * getBox (const Vector3 &vector)
 

Return the HashGridBox3 at position vector.


const HashGridBox3< Item > * getBox (const Vector3 &vector) const
 

Return the HashGridBox3 at position vector (const version).


bool getIndices (const HashGridBox3< Item > &box, Position &x, Position &y, Position &z) const
 

Get the position indices of a HashGridBox3.


void insert (Position x, Position y, Position z, const Item &item)
 

Insert an item at position (x, y, z).


void insert (const Vector3 &vector, const Item &item)
 

Insert an item at position vector.


bool remove (Position x, Position y, Position z, const Item &item)
 

Remove an item from position (x, y ,z).


bool remove (const Vector3 &vector, const Item &item)
 

Remove an item from position vector.


Miscellaneous
void host (Visitor< HashGrid3 > &visitor)
Predicates
bool operator== (const HashGrid3 &grid) const
 

Equality operator.


bool operator!= (const HashGrid3 &grid) const
 

Inequality operator.


bool isEmpty () const
 

Tests, whether this is empty.


Debugging and Diagnostics
virtual bool isValid () const
 

Validity check.


virtual void dump (std::ostream &s=std::cout, Size depth=0) const
 

Dump the contents of a HashGrid3 to a stream.



Private Member Functions

Index getIndex_ (const HashGridBox3< Item > &box) const
void setNeighbours_ ()
 

update the neighbour information in the individual boxes



Private Attributes

HashGridBox3< Item > * box_
Vector3 origin_
Vector3 unit_
Size dimension_x_
Size dimension_y_
Size dimension_z_

External Iterators

typedef Position BoxIteratorPosition
typedef ForwardIterator
< HashGrid3< Item >
, HashGridBox3< Item >
, BoxIteratorPosition,
BoxIteratorTraits
BoxIterator
typedef ConstForwardIterator
< HashGrid3< Item >
, HashGridBox3< Item >
, BoxIteratorPosition,
BoxIteratorTraits
ConstBoxIterator
class BoxIteratorTraits
BoxIterator beginBox ()
BoxIterator endBox ()
ConstBoxIterator beginBox () const
ConstBoxIterator endBox () const

Internal Iterators

bool apply (UnaryProcessor< Item > &processor)
bool apply (UnaryProcessor< HashGridBox3< Item > > &processor)
const Item * getClosestItem (const Vector3 &point, Size distance) const
static float calculateMinSpacing (LongIndex memory, const Vector3 &size)

Detailed Description

template<typename Item>
class BALL::HashGrid3< Item >

Three-dimensional Hash Grid Class. ?????


Member Typedef Documentation

template<typename Item>
typedef Position BALL::HashGrid3< Item >::BoxIteratorPosition

Constructor & Destructor Documentation

template<typename Item >
BALL::HashGrid3< Item >::HashGrid3 (  )  [inline]

Default constructor.

template<typename Item >
BALL::HashGrid3< Item >::HashGrid3 ( const Vector3 origin,
Size  dimension_x,
Size  dimension_y,
Size  dimension_z,
float  spacing_x,
float  spacing_y,
float  spacing_z 
) [inline]

Constructor using origin, dimensions, and spacings of the grid. It creates a hashgrid at origin with axis-dependant spacings.

Parameters:
origin 
dimension_x 
dimension_y 
dimension_z 
spacing_x 
spacing_y 
spacing_z 
template<typename Item >
BALL::HashGrid3< Item >::HashGrid3 ( const Vector3 origin,
Size  dimension_x,
Size  dimension_y,
Size  dimension_z,
float  spacing 
) [inline]

Constructor using origin, dimensions, and a single spacing (only cubic grids)

template<typename Item >
BALL::HashGrid3< Item >::HashGrid3 ( const Vector3 origin,
const Vector3 size,
float  spacing 
) [inline]

Constructor using two vectors and a single spacing. This constructor creates a hash grid at origin with spacing spacing. The vector size has to be relative to origin and defines the opposite corner of the grid, thereby setting the size of the grid.

Parameters:
origin a vector defining the origin of our cubic hash grid
size a vector defining the opposite corner of the cubic grid
spacing this float will be used as spacing in all three dimensions

References BALL::HashGrid3< Item >::box_, BALL::HashGrid3< Item >::dimension_x_, BALL::HashGrid3< Item >::dimension_y_, BALL::HashGrid3< Item >::dimension_z_, and BALL::HashGrid3< Item >::setNeighbours_().

template<typename Item >
BALL::HashGrid3< Item >::HashGrid3 ( const HashGrid3< Item > &  grid,
bool  deep = true 
) [inline]

Copy constructor.

template<typename Item >
BALL::HashGrid3< Item >::~HashGrid3 (  )  [inline, virtual]

Member Function Documentation

template<typename Item>
bool BALL::HashGrid3< Item >::apply ( UnaryProcessor< HashGridBox3< Item > > &  processor  )  [inline]
template<typename Item>
ConstBoxIterator BALL::HashGrid3< Item >::beginBox (  )  const [inline]
template<typename Item>
BoxIterator BALL::HashGrid3< Item >::beginBox (  )  [inline]
template<typename Item >
BALL_INLINE float BALL::HashGrid3< Item >::calculateMinSpacing ( LongIndex  memory,
const Vector3 size 
) [inline, static]

Calculate the minimum required spacing to build a HashGrid3 with the given size and less than the given memory consumption.

Parameters:
memory the amount of memory in bytes
size the diagonal of the grid
Returns:
the minimal needed spacing

References BALL::Maths::floor(), BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename Item >
BALL_INLINE void BALL::HashGrid3< Item >::clear ( const Vector3 vector  )  [inline]
template<typename Item >
BALL_INLINE void BALL::HashGrid3< Item >::clear ( Position  x,
Position  y,
Position  z 
) [inline]

Clears the HashGridBox3 at position (x, y, z).

References BALL::HashGridBox3< Item >::clear(), and BALL::HashGrid3< Item >::getBox().

template<typename Item >
Size BALL::HashGrid3< Item >::countNonEmptyBoxes (  )  const [inline]

Counts the non-empty boxes of a grid.

References BALL::HashGrid3< Item >::box_, and BALL::HashGrid3< Item >::isEmpty().

Referenced by BALL::HashGrid3< Item >::dump().

template<typename Item >
BALL_INLINE void BALL::HashGrid3< Item >::destroy ( const Vector3 vector  )  [inline]

Destroys a box of the grid (obsolete, only calls clear()).

References BALL::HashGrid3< Item >::clear().

template<typename Item >
BALL_INLINE void BALL::HashGrid3< Item >::destroy ( Position  x,
Position  y,
Position  z 
) [inline]

Destroys a box of the grid (obsolete, only calls clear()).

References BALL::HashGrid3< Item >::clear().

template<typename Item >
BALL_INLINE void BALL::HashGrid3< Item >::destroy (  )  [inline]

Destroys the grid (obsolete, only calls clear()).

References BALL::HashGrid3< Item >::clear().

template<typename Item>
ConstBoxIterator BALL::HashGrid3< Item >::endBox (  )  const [inline]
template<typename Item>
BoxIterator BALL::HashGrid3< Item >::endBox (  )  [inline]
template<typename Item >
BALL_INLINE void BALL::HashGrid3< Item >::get ( HashGrid3< Item > &  grid,
bool  deep = true 
) const [inline]
template<typename Item >
BALL_INLINE void BALL::HashGrid3< Item >::get ( Vector3 origin,
Vector3 unit,
Size dimension_x,
Size dimension_y,
Size dimension_z 
) const [inline]
template<typename Item >
BALL_INLINE const HashGridBox3< Item > * BALL::HashGrid3< Item >::getBox ( const Vector3 vector  )  const [inline]

Return the HashGridBox3 at position vector (const version).

template<typename Item >
BALL_INLINE HashGridBox3< Item > * BALL::HashGrid3< Item >::getBox ( const Vector3 vector  )  [inline]
template<typename Item >
BALL_INLINE const HashGridBox3< Item > * BALL::HashGrid3< Item >::getBox ( Position  x,
Position  y,
Position  z 
) const [inline]

Return the HashGridBox3 at position (x, y, z) (const version).

template<typename Item >
const Item * BALL::HashGrid3< Item >::getClosestItem ( const Vector3 point,
Size  distance 
) const [inline]

Get the nearest item for a point

Parameters:
distance number of adjacted boxes in each direction to search in

References BALL::HashGridBox3< Item >::beginData(), BALL::HashGridBox3< Item >::endData(), BALL::HashGrid3< Item >::getBox(), BALL::HashGrid3< Item >::getIndices(), and BALL::HashGridBox3< Item >::isEmpty().

template<typename Item>
BALL_INLINE Index BALL::HashGrid3< Item >::getIndex_ ( const HashGridBox3< Item > &  box  )  const [inline, private]
template<typename Item>
BALL_INLINE bool BALL::HashGrid3< Item >::getIndices ( const HashGridBox3< Item > &  box,
Position x,
Position y,
Position z 
) const [inline]
template<typename Item >
BALL_INLINE const Vector3 & BALL::HashGrid3< Item >::getOrigin (  )  const [inline]

Returns a const reference of the grid origin.

References BALL::HashGrid3< Item >::origin_.

template<typename Item >
BALL_INLINE Vector3 & BALL::HashGrid3< Item >::getOrigin (  )  [inline]

Returns the origin of the grid.

References BALL::HashGrid3< Item >::origin_.

template<typename Item >
BALL_INLINE Size BALL::HashGrid3< Item >::getSizeX (  )  const [inline]

Get the x dimension of the grid.

References BALL::HashGrid3< Item >::dimension_x_.

template<typename Item >
BALL_INLINE Size BALL::HashGrid3< Item >::getSizeY (  )  const [inline]

Get the y dimension of the grid.

References BALL::HashGrid3< Item >::dimension_y_.

template<typename Item >
BALL_INLINE Size BALL::HashGrid3< Item >::getSizeZ (  )  const [inline]

Get the z dimension of the grid.

References BALL::HashGrid3< Item >::dimension_z_.

template<typename Item >
BALL_INLINE const Vector3 & BALL::HashGrid3< Item >::getUnit (  )  const [inline]

Returns the unit of the grid (const version).

References BALL::HashGrid3< Item >::unit_.

template<typename Item >
BALL_INLINE Vector3 & BALL::HashGrid3< Item >::getUnit (  )  [inline]

Returns the unit of the grid.

References BALL::HashGrid3< Item >::unit_.

template<typename Item >
BALL_INLINE void BALL::HashGrid3< Item >::host ( Visitor< HashGrid3< Item > > &  visitor  )  [inline]
template<typename Item>
BALL_INLINE void BALL::HashGrid3< Item >::insert ( const Vector3 vector,
const Item &  item 
) [inline]

Insert an item at position vector.

References BALL::HashGrid3< Item >::getBox(), and BALL::HashGridBox3< Item >::insert().

template<typename Item>
BALL_INLINE void BALL::HashGrid3< Item >::insert ( Position  x,
Position  y,
Position  z,
const Item &  item 
) [inline]

Insert an item at position (x, y, z).

References BALL::HashGridBox3< Item >::insert().

template<typename Item >
BALL_INLINE bool BALL::HashGrid3< Item >::isEmpty (  )  const [inline]
template<typename Item >
bool BALL::HashGrid3< Item >::isValid (  )  const [inline, virtual]
template<typename Item >
BALL_INLINE bool BALL::HashGrid3< Item >::operator!= ( const HashGrid3< Item > &  grid  )  const [inline]

Inequality operator.

template<typename Item >
BALL_INLINE const HashGrid3< Item > & BALL::HashGrid3< Item >::operator= ( const HashGrid3< Item > &  grid  )  [inline]

Assignment operator.

template<typename Item>
BALL_INLINE bool BALL::HashGrid3< Item >::remove ( const Vector3 vector,
const Item &  item 
) [inline]

Remove an item from position vector.

References BALL::HashGrid3< Item >::getBox(), and BALL::HashGridBox3< Item >::remove().

template<typename Item>
BALL_INLINE bool BALL::HashGrid3< Item >::remove ( Position  x,
Position  y,
Position  z,
const Item &  item 
) [inline]

Remove an item from position (x, y ,z).

References BALL::HashGrid3< Item >::getBox(), and BALL::HashGridBox3< Item >::remove().

template<typename Item >
void BALL::HashGrid3< Item >::set ( const Vector3 origin,
const Vector3 unit,
Size  dimension_x,
Size  dimension_y,
Size  dimension_z 
) [inline]

assigns the content of a hash grid (obsolete)

Referenced by BALL::HashGrid3< Item >::get().

template<typename Item >
BALL_INLINE void BALL::HashGrid3< Item >::setNeighbours_ (  )  [inline, private]

Friends And Related Function Documentation

template<typename Item>
friend class BoxIteratorTraits [friend]

Member Data Documentation