HilbertCoordinateMapper Class Reference

#include <HilbertCoordinateMapper.h>

List of all members.

Public Member Functions

 HilbertCoordinateMapper ()

Static Public Member Functions

static double toHilbert2D (const vector< double > *coordinates)
static double toHilbert3D (const vector< double > *coordinates)

Protected Types

typedef boost::multi_array<
double, 2 > 
array_type

Static Protected Member Functions

static array_type makePattern ()

Static Protected Attributes

static array_type Box_3D = HilbertCoordinateMapper::pattern
static array_type Box_3Dtemp = HilbertCoordinateMapper::pattern
static array_type pattern = HilbertCoordinateMapper::makePattern()

Static Private Member Functions

static void makeVec (const double x, const double y, vector< double > *where)
static void makeVec (const double x, const double y, const double z, vector< double > *where)
static void mid (const vector< double > *x, const vector< double > *y, vector< double > *to)
static void mid3D (unsigned int pos, unsigned int i, unsigned int j)
static double dist (const vector< double > *x, const vector< double > *y, const unsigned int dim)
static double dist3D (const vector< double > *x, const unsigned int i)
static unsigned int closestTo (const vector< double > *coor, const vector< vector< double > > *corners, const unsigned int dim)
static unsigned int closestTo3D (const vector< double > *coor)
static void refineCoors2D (vector< vector< double > > *corners, const unsigned int cell)
static void refineCoors3D (const unsigned int cell)
static double base8_to_base10 (const vector< unsigned int > *digits)
static double base4_to_base10 (const vector< unsigned int > *digits)
template<const unsigned int base>
static double base_n_to_base10 (const vector< unsigned int > *digits)


Detailed Description

Class which maps coordinates to 1D Hilbert Coordinates.

Definition at line 32 of file HilbertCoordinateMapper.h.


Member Typedef Documentation

typedef boost::multi_array<double, 2 > HilbertCoordinateMapper::array_type [protected]

Definition at line 103 of file HilbertCoordinateMapper.h.


Constructor & Destructor Documentation

HilbertCoordinateMapper::HilbertCoordinateMapper (  )  [inline]

Base constructor. Does nothing.

Definition at line 35 of file HilbertCoordinateMapper.h.


Member Function Documentation

void HilbertCoordinateMapper::makeVec ( const double  x,
const double  y,
vector< double > *  where 
) [static, private]

Conveniance 2D vector creation function.

Definition at line 21 of file HilbertCoordinateMapper.cpp.

Referenced by toHilbert2D().

void HilbertCoordinateMapper::makeVec ( const double  x,
const double  y,
const double  z,
vector< double > *  where 
) [static, private]

Convenience 3D vector creation function.

Definition at line 34 of file HilbertCoordinateMapper.cpp.

void HilbertCoordinateMapper::mid ( const vector< double > *  x,
const vector< double > *  y,
vector< double > *  to 
) [static, private]

Calculates the midpoint of two vectors.

Parameters:
x The first vector.
y The second vector.
to Pointer to where the mid-point vector should be stored in.

Definition at line 96 of file HilbertCoordinateMapper.cpp.

Referenced by refineCoors2D().

void HilbertCoordinateMapper::mid3D ( unsigned int  pos,
unsigned int  i,
unsigned int  j 
) [inline, static, private]

Calculates the mid-point of two 3D vectors in the matrix Box_3D.

Parameters:
pos Position where to store the resulting mid-point vector in Box_3Dtemp.
i Index of the first vector to use in the matrix.
j Index of the second vector to use in the matrix.

Definition at line 113 of file HilbertCoordinateMapper.cpp.

References Box_3D, and Box_3Dtemp.

Referenced by refineCoors3D().

double HilbertCoordinateMapper::dist ( const vector< double > *  vx,
const vector< double > *  vy,
const unsigned int  dim 
) [static, private]

Function returning the euclidian distance between two vectors.

Parameters:
vx Pointer to the first vector
vy Pointer to the second vector
dim The number of dimensions
Returns:
The euclidian distance; sqrt(<vx,vy>)

Definition at line 48 of file HilbertCoordinateMapper.cpp.

Referenced by closestTo(), and toHilbert2D().

double HilbertCoordinateMapper::dist3D ( const vector< double > *  vx,
const unsigned int  num 
) [inline, static, private]

Function returning the euclidian distance between two vectors.

Parameters:
vx Pointer to the first vector
vy Pointer to the second vector
dim The number of dimensions
Returns:
The euclidian distance; sqrt(<vx,vy>)

Definition at line 396 of file HilbertCoordinateMapper.cpp.

References Box_3D.

Referenced by closestTo3D().

unsigned int HilbertCoordinateMapper::closestTo ( const vector< double > *  coor,
const vector< vector< double > > *  corners,
const unsigned int  dim 
) [static, private]

Determines the closest vector from a set to a given vector, in terms of euclidian distance.

Parameters:
corners The set of coordinates we wish to select the closest from
coor The coordinate we wish to check against
dim The number of dimensions
Returns:
The index of the closest coordinate in coors

Definition at line 68 of file HilbertCoordinateMapper.cpp.

References dist().

Referenced by toHilbert2D().

unsigned int HilbertCoordinateMapper::closestTo3D ( const vector< double > *  coor  )  [static, private]

Determines the closest vector from a set to a given vector, in terms of euclidian distance.

Parameters:
corners The set of coordinates we wish to select the closest from
coor The coordinate we wish to check against
dim The number of dimensions
Returns:
The index of the closest coordinate in coors

Definition at line 372 of file HilbertCoordinateMapper.cpp.

References dist3D().

Referenced by toHilbert3D().

void HilbertCoordinateMapper::refineCoors2D ( vector< vector< double > > *  corners,
const unsigned int  cell 
) [static, private]

Function which refines a given section of a rectangle.

Parameters:
corners A vector containing the 4 cornerpoints of a rectangle. At the end of the function call, this contains the 4 corners of the refined rectangle at the given cell.
cell A number [0,1,..,4] indicating which cell we are refining (refer to the paper for more information).

Definition at line 126 of file HilbertCoordinateMapper.cpp.

References mid().

Referenced by toHilbert2D().

void HilbertCoordinateMapper::refineCoors3D ( const unsigned int  cell  )  [static, private]

Function which refines a given section of a cube.

Parameters:
corners A vector containing the 8 cornerpoints of a cube. At the end of the function call, this contains the 8 corners of the refined cube at the given cell.
cell A number [1,2,..,8] indicating which cell we are refining (refer to the paper for more information).

Definition at line 184 of file HilbertCoordinateMapper.cpp.

References Box_3D, Box_3Dtemp, and mid3D().

Referenced by toHilbert3D().

static double HilbertCoordinateMapper::base8_to_base10 ( const vector< unsigned int > *  digits  )  [inline, static, private]

Definition at line 76 of file HilbertCoordinateMapper.h.

Referenced by toHilbert3D().

static double HilbertCoordinateMapper::base4_to_base10 ( const vector< unsigned int > *  digits  )  [inline, static, private]

Definition at line 80 of file HilbertCoordinateMapper.h.

Referenced by toHilbert2D().

template<const unsigned int base>
static double HilbertCoordinateMapper::base_n_to_base10 ( const vector< unsigned int > *  digits  )  [inline, static, private]

Definition at line 85 of file HilbertCoordinateMapper.h.

static array_type HilbertCoordinateMapper::makePattern (  )  [inline, static, protected]

Definition at line 108 of file HilbertCoordinateMapper.h.

References pattern.

double HilbertCoordinateMapper::toHilbert2D ( const vector< double > *  coordinates  )  [static]

Maps a 2D coordinate to a real number in [0,1] using the distance on a sufficiently refined Hilbert curve.

Parameters:
coordinates Pointer to where the 2D coordinate is stored
Returns:
The Hilbert coordinate of the given vector
Note: the coordinates vector is assumed to be of size >= 2. Dimensions higher than two, if available, are ignored.

Warning: the coordinates vector is assumed to be normalised!

Definition at line 289 of file HilbertCoordinateMapper.cpp.

References base4_to_base10(), closestTo(), dist(), makeVec(), RECURSE_LEVEL, and refineCoors2D().

Referenced by HilbertOrdering2D< cur_type >::getVal().

double HilbertCoordinateMapper::toHilbert3D ( const vector< double > *  coordinates  )  [static]

Maps a 3D coordinate to a real number in [0,1] using the distance on a sufficiently refined Hilbert curve.

Parameters:
coordinates Pointer to where the 3D coordinate is stored
Returns:
The Hilbert coordinate of the given vector
Note: the coordinates vector is assumed to be of size >= 2. Dimensions higher than two, if available, are ignored.

Warning: the coordinates vector is assumed to be normalised!

Definition at line 333 of file HilbertCoordinateMapper.cpp.

References base8_to_base10(), Box_3D, closestTo3D(), pattern, RECURSE_LEVEL, and refineCoors3D().

Referenced by Hilbert_R_tree::insert(), Hilbert_TGSinsert_tree< base_tree >::insertionSort(), HilbertOrdering3D< Cubic_Bounding_Box_Container >::sort(), and Hilbert_R_tree::updateLHVLocal().


Member Data Documentation

array_type HilbertCoordinateMapper::Box_3D = HilbertCoordinateMapper::pattern [static, protected]

Definition at line 104 of file HilbertCoordinateMapper.h.

Referenced by dist3D(), mid3D(), refineCoors3D(), and toHilbert3D().

array_type HilbertCoordinateMapper::Box_3Dtemp = HilbertCoordinateMapper::pattern [static, protected]

Definition at line 105 of file HilbertCoordinateMapper.h.

Referenced by mid3D(), and refineCoors3D().

array_type HilbertCoordinateMapper::pattern = HilbertCoordinateMapper::makePattern() [static, protected]

Definition at line 106 of file HilbertCoordinateMapper.h.

Referenced by makePattern(), and toHilbert3D().


The documentation for this class was generated from the following files:
Generated on Sat Oct 13 17:34:43 2007 for R-Tree by  doxygen 1.5.2