VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
DtSpatialSubdivision< T > Class Template Reference

template<typename T>
class DtSpatialSubdivision< T >

The DtSpatialSubdivision class represents a uniform spatial container. The container is divided up into a lattice of cells, with resolution specified at creation. Its purpose is to efficiently store and search objects spatially, with each cell being a container for the objects in it. The DtSpatialSubdivision is a rectangular area (or rectangular solid if 3D) containing some number of these cells.

-------------------
|\ \ \
| \________\________\
| |\ \ \
| | \ \ \
| | \--------\--------\
|\| | | |
| \ | | |
| |\ | | |
| | \ | | |
| | \--------\--------\
\| | | |
\ | | |
\ | | |
\ | | |
\--------\--------\
A 2 x 2 x 2 Spatial Subdivision

DtSpatialSubdivision is a templated container, similar to the std::list or std::vector classes. As such, it can hold any specified item. The intended use is to store elements that have spatial properties - elements that have an actual volume, position, orientation, and so on.

This class provides a minimal interface to make it easy for users to extend the types of elements contained within it by writing examination and modification classes outside of this one. Thus no mechanism for examination or modification, outside of points, is provided. This greatly facilitates extending existing capabilities and adding new ones. As a result, the spatial subdivision functionality is spread out across an entire family of classes.

This class is not threadsafe.

Class Invariant

A fully constructed spatial subdivision must always respect the following:

Creating Spatial Subdivision Objects

The DtSpatialSubdivision is the container class. When instantiating this class, you must specify the type of object contained using the template parameter. To create a spatial subdivision, do the following:

DtSpatialSubdivision<DtGdbNode*>* spatialSubdivision = 0;
spatialSubdivision = new DtSpatialSubdivision<DtGdbNode*>(params);
Note
To change the type of contained element, change the template parameter - DtGdbnode*.

Spatial Subdivision Intersectors

The spatial subdivision intersector classes know how to intersect a primitive and a spatial subdivision, and apply a specified operation to the results of the intersection through a functor interface.

The functor interface allows for tremendous flexibility in the type and complexity of operations that are performed on the spatial subdivision. By changing the functor supplied to the intersect() member function, different operations can be performed, such as inserting elements into the spatial subdivision, gathering elements of specific characteristics from the spatial subdivision, or simply accumulating all cells in the spatial subdivision that are part of the intersection. The following are the most primitive examples of intersectors, though others are available:

Creating new intersector classes is probably one of the most useful extensions to the spatial subdivision classes. For instance, an intersector class for spheres or cylinders or other implicit surfaces would enable efficient selection of all elements within a specified radius of a location (or line).

To create a new intersector class, there is no need to derive from any parent class. The intersector class merely needs to know how to intersect the specified primitive with the spatial subdivision and to allow user-specified processing of the results.

So, to create a sphere intersector you could test every cell for inclusion with the specified sphere, using the properties of the spatial subdivision (cell deltas, location, and so on) to calculate the cells to test, and to pass these cells to the user-specified functor. This would be useful when selecting all cells within a blast radius. To take it a step further, a new functor could also be derived that would know how to intersect all the elements of a cell, such as DtGdbNodes, with the specified primitive. Used together, the new sphere intersector and sphere intersection functor could be used to select all polygons within the blast radius of a detonation.

Spatial Subdivision Functors

The spatial subdivision functors are simple classes that are used by the spatial subdivision intersectors to perform different operations on the results of intersection tests. These operations include insertion of elements into spatial subdivision cells (DtSsInsertionFunctor), accumulation of spatial subdivision cells for later analysis (DtSsAccumulationFunctor), among others.

While simple, these functors differ from standard functors in the following important ways:

The following are examples of functors:

To create a new type of spatial subdivision functor, derive your new functor from the DtSsFunctor class. To use this functor, pass it as a parameter to an existing spatial subdivision intersector or other utility class, or to a newly created spatial subdivision utility class.

Note
Be sure that the new functor adheres to the interface of the DtSsFunctor classes.

Spatial Subdivision Inserters

The spatial subdivision inserter classes are utility classes that combine the appropriate intersector with an insertion functor, in order to facilitate inserting of elements of the appropriate type into a spatial subdivision.

To insert an element into a spatial subdivision container, you use an inserter class. The following example show how the terrain database now creates the spatial subdivision for the terrain polygons. The terrain() function returns the root terrain polygon node (DtGdbNode*).

DtSsGdbNodeInserter terrainInserter;
if (!terrainInserter.insert(terrain(), *myTerrainSpatialSubdivision))
{
// error handling code...
}
Inheritance diagram for DtSpatialSubdivision< T >:
Inheritance graph
[legend]

Public Types

typedef int DtSpatialSubCellIndex
 
typedef std::list< T > DtSpatialSubCellType
 
typedef
DtSpatialSubCellType::iterator 
DtSpatialSubCellIter
 
typedef
DtSpatialSubCellType::const_iterator 
DtSpatialSubCellConstIter
 
typedef std::vector
< DtSpatialSubCellType >
::iterator 
DtSpatialSubIter
 
typedef std::vector
< DtSpatialSubCellType >
::const_iterator 
DtSpatialSubConstIter
 

Public Member Functions

 DtSpatialSubdivision (const DtPoint &origin, unsigned int cellCountX, unsigned int cellCountY, unsigned int cellCountZ, double cellDx, double cellDy, double cellDz)
 
 DtSpatialSubdivision (DtExtent extent, unsigned int cellCountX, unsigned int cellCountY, unsigned int cellCountZ=1)
 
 DtSpatialSubdivision (DtExtent extent, double cellDx, double cellDy, double cellDz=-1.0)
 
virtual ~DtSpatialSubdivision ()
 
virtual void setExtent (DtExtent extent)
 
virtual void setResolutions (unsigned int cellCountX, unsigned int cellCountY, unsigned int cellCountZ=1)
 
virtual void resize (DtExtent extent, unsigned int cellCountX, unsigned int cellCountY, unsigned int cellCountZ)
 
virtual void clear ()
 
virtual void clearCell (DtSpatialSubIter &cellIter)
 
virtual void clearCell (DtSpatialSubIter &startIter, DtSpatialSubIter &endIter)
 
virtual bool empty () const
 
virtual unsigned int size () const
 
virtual void offsetToIndices (const DtPoint &offset, DtSpatialSubCellIndex &xIndex, DtSpatialSubCellIndex &yIndex, DtSpatialSubCellIndex &zIndex) const
 
virtual bool indexIsValid (DtSpatialSubCellIndex index) const
 
virtual bool indicesAreValid (DtSpatialSubCellIndex xIndex, DtSpatialSubCellIndex yIndex, DtSpatialSubCellIndex zIndex) const
 
virtual int sizeInBytes () const
 
virtual DtSpatialSubIter begin ()
 
virtual DtSpatialSubConstIter begin () const
 
virtual DtSpatialSubIter end ()
 
virtual DtSpatialSubConstIter end () const
 
virtual DtSpatialSubCellTypeat (DtSpatialSubCellIndex index)
 
virtual const
DtSpatialSubCellType
at (DtSpatialSubCellIndex index) const
 
virtual DtSpatialSubCellTypeat (DtSpatialSubCellIndex xIndex, DtSpatialSubCellIndex yIndex, DtSpatialSubCellIndex zIndex)
 
virtual const
DtSpatialSubCellType
at (DtSpatialSubCellIndex xIndex, DtSpatialSubCellIndex yIndex, DtSpatialSubCellIndex zIndex) const
 
virtual DtSpatialSubCellTypeoperator[] (DtSpatialSubCellIndex index)
 
virtual const
DtSpatialSubCellType
operator[] (DtSpatialSubCellIndex index) const
 
virtual DtSpatialSubCellTypefront ()
 
virtual const
DtSpatialSubCellType
front () const
 
virtual DtSpatialSubCellTypeback ()
 
virtual const
DtSpatialSubCellType
back () const
 
virtual const DtPointorigin () const
 
virtual void setOrigin (const DtPoint &newOrigin)
 
virtual unsigned int cellCountX () const
 
virtual unsigned int cellCountY () const
 
virtual unsigned int cellCountZ () const
 
virtual double cellDx () const
 
virtual double cellDy () const
 
virtual double cellDz () const
 
virtual bool cell (double x, double y, double z, DtSpatialSubCellType *&cell)
 
virtual bool cell (double x, double y, double z, const DtSpatialSubCellType *&cell) const
 
virtual bool cell (const DtPoint &containing, DtSpatialSubCellType *&cell)
 
virtual bool cell (const DtPoint &containing, const DtSpatialSubCellType *&cell) const
 

Protected Member Functions

bool testInvariant () const
 
void calculateMinMaxOffsets ()
 
void calculateInverseDeltas ()
 
double inverseCellDx () const
 
double inverseCellDy () const
 
double inverseCellDz () const
 

Protected Attributes

DtPoint myOrigin
 
unsigned int myCellCountX
 
unsigned int myCellCountY
 
unsigned int myCellCountZ
 
double myCellDx
 
double myCellDy
 
double myCellDz
 
double myMinOffsetX
 
double myMinOffsetY
 
double myMinOffsetZ
 
std::vector< DtSpatialSubCellTypemyCells
 
double myInverseCellDx
 
double myInverseCellDy
 
double myInverseCellDz
 
double myMaxOffsetX
 
double myMaxOffsetY
 
double myMaxOffsetZ
 

Member Typedef Documentation

template<typename T>
typedef std::list<T> DtSpatialSubdivision< T >::DtSpatialSubCellType

Typedefs for the containers used to hold the contained elements.

template<typename T>
typedef DtSpatialSubCellType::iterator DtSpatialSubdivision< T >::DtSpatialSubCellIter

Typedefs for the containers used to hold the contained elements.

template<typename T>
typedef DtSpatialSubCellType::const_iterator DtSpatialSubdivision< T >::DtSpatialSubCellConstIter

Typedefs for the containers used to hold the contained elements.

template<typename T>
typedef int DtSpatialSubdivision< T >::DtSpatialSubCellIndex

As this is a 3D grid, cells can be addressed by indices as well.

template<typename T>
typedef std::vector< DtSpatialSubCellType >::iterator DtSpatialSubdivision< T >::DtSpatialSubIter

Iterator into the spatial subdivision's cells.

template<typename T>
typedef std::vector< DtSpatialSubCellType >::const_iterator DtSpatialSubdivision< T >::DtSpatialSubConstIter

Iterator into the spatial subdivision's cells.

Constructor & Destructor Documentation

template<typename T>
DtSpatialSubdivision< T >::DtSpatialSubdivision ( const DtPoint origin,
unsigned int  cellCountX,
unsigned int  cellCountY,
unsigned int  cellCountZ,
double  cellDx,
double  cellDy,
double  cellDz 
)

Intended default constructor.

Exceptions
std::bad_allocif there is not enough memory to allocate the object
template<typename T>
DtSpatialSubdivision< T >::DtSpatialSubdivision ( DtExtent  extent,
unsigned int  cellCountX,
unsigned int  cellCountY,
unsigned int  cellCountZ = 1 
)
explicit

Cover this extent with the given number of cells.

Exceptions
std::bad_allocif there is not enough memory to allocate the object
template<typename T>
DtSpatialSubdivision< T >::DtSpatialSubdivision ( DtExtent  extent,
double  cellDx,
double  cellDy,
double  cellDz = -1.0 
)
explicit

Cover this extent with the given cell sizes (in DB units)

Exceptions
std::bad_allocif there is not enough memory to allocate the object
template<typename T>
virtual DtSpatialSubdivision< T >::~DtSpatialSubdivision ( )
virtual

Destructor.

Member Function Documentation

template<typename T>
virtual void DtSpatialSubdivision< T >::setExtent ( DtExtent  extent)
virtual

Resizes the spatial subdivision to fit the specified extent. This function clears the contents of the subdivision, and updates the cell sizes and origin with the specified extent.

template<typename T>
virtual void DtSpatialSubdivision< T >::setResolutions ( unsigned int  cellCountX,
unsigned int  cellCountY,
unsigned int  cellCountZ = 1 
)
virtual

Warning: clears all contents! Resets the cell counts of the spatial subdivision to the specified values, reallocating the memory associated if necessary.

As an optimization, it will not reallocate if the total cell count is the same as before, even if the resolutions are actually different. Thus if the previous resolutions were 10,15,1 and the new resolutions are 15,10,1, no reallocation will occur.

Note
The minimum resolution is 1, which will be used if 0 is specified.
template<typename T>
virtual void DtSpatialSubdivision< T >::resize ( DtExtent  extent,
unsigned int  cellCountX,
unsigned int  cellCountY,
unsigned int  cellCountZ 
)
virtual

Resizes the spatial subdivision to fit the specified extent. This function clears the contents of the subdivision, and updates the cell sizes and origin with the specified extent. This function will only reallocate the container of cells when the requested cell count total differs from the existing cell count total.

Note
Thus if a subdivision is resized from 10,10,1 to 10,1,10, the cells will only be cleared, not reallocated. This is meant as a possible optimization when it is possible to reuse an existing container.
template<typename T>
virtual void DtSpatialSubdivision< T >::clear ( )
virtual

Empties the entire spatial subdivision, removing all contents.

Note
Does not deallocate the container, just clears the contents of the cells.
template<typename T>
virtual void DtSpatialSubdivision< T >::clearCell ( DtSpatialSubIter cellIter)
virtual

Clears the cells referenced by the specified iterators.

Note
The template type must support the clear() function, as this function will call clear() on all cells at or between the specified iterators.
template<typename T>
virtual void DtSpatialSubdivision< T >::clearCell ( DtSpatialSubIter startIter,
DtSpatialSubIter endIter 
)
virtual
template<typename T>
virtual bool DtSpatialSubdivision< T >::empty ( ) const
virtual
Returns
A boolean indicating whether or not anything is contained in the subdivision
template<typename T>
virtual unsigned int DtSpatialSubdivision< T >::size ( ) const
virtual
Returns
the total number of cells in the subdivision
template<typename T>
virtual DtSpatialSubIter DtSpatialSubdivision< T >::begin ( )
virtual
Returns
iterators to the first and last cells respectively.
template<typename T>
virtual DtSpatialSubConstIter DtSpatialSubdivision< T >::begin ( ) const
virtual
Returns
iterators to the first and last cells respectively.
template<typename T>
virtual DtSpatialSubIter DtSpatialSubdivision< T >::end ( )
virtual
Returns
iterators to the first and last cells respectively.
template<typename T>
virtual DtSpatialSubConstIter DtSpatialSubdivision< T >::end ( ) const
virtual
Returns
iterators to the first and last cells respectively.
template<typename T>
virtual DtSpatialSubCellType& DtSpatialSubdivision< T >::at ( DtSpatialSubCellIndex  index)
virtual
Returns
an iterator to the spatial subdivision cell at the specified index, if the index is valid.
Note
the results are undefined if the index is outside of the range of the spatial subdivision's cells. (technically, this just passes the index down to the std::vector at() call, so it will throw a range error exception.)
template<typename T>
virtual const DtSpatialSubCellType& DtSpatialSubdivision< T >::at ( DtSpatialSubCellIndex  index) const
virtual
Returns
an iterator to the spatial subdivision cell at the specified index, if the index is valid.
Note
the results are undefined if the index is outside of the range of the spatial subdivision's cells. (technically, this just passes the index down to the std::vector at() call, so it will throw a range error exception.)
template<typename T>
virtual DtSpatialSubCellType& DtSpatialSubdivision< T >::at ( DtSpatialSubCellIndex  xIndex,
DtSpatialSubCellIndex  yIndex,
DtSpatialSubCellIndex  zIndex 
)
virtual
Returns
an iterator to the spatial subdivision cell at the specified index, if the index is valid.
Note
the results are undefined if the index is outside of the range of the spatial subdivision's cells. (technically, this just passes the index down to the std::vector at() call, so it will throw a range error exception.)
template<typename T>
virtual const DtSpatialSubCellType& DtSpatialSubdivision< T >::at ( DtSpatialSubCellIndex  xIndex,
DtSpatialSubCellIndex  yIndex,
DtSpatialSubCellIndex  zIndex 
) const
virtual
Returns
an iterator to the spatial subdivision cell at the specified index, if the index is valid.
Note
the results are undefined if the index is outside of the range of the spatial subdivision's cells. (technically, this just passes the index down to the std::vector at() call, so it will throw a range error exception.)
template<typename T>
virtual DtSpatialSubCellType& DtSpatialSubdivision< T >::operator[] ( DtSpatialSubCellIndex  index)
virtual
Returns
an iterator to the spatial subdivision cell at the specified index,
Note
Does not check if the index is valid or not.
template<typename T>
virtual const DtSpatialSubCellType& DtSpatialSubdivision< T >::operator[] ( DtSpatialSubCellIndex  index) const
virtual
Returns
an iterator to the spatial subdivision cell at the specified index,
Note
Does not check if the index is valid or not.
template<typename T>
virtual DtSpatialSubCellType& DtSpatialSubdivision< T >::front ( )
virtual
Returns
a reference (const or not) to the first or last spatial subdivision cell in the spatial subdivision.
Note
User must ensure the spatial subdivision is not empty before calling these functions.
template<typename T>
virtual const DtSpatialSubCellType& DtSpatialSubdivision< T >::front ( ) const
virtual
Returns
a reference (const or not) to the first or last spatial subdivision cell in the spatial subdivision.
Note
User must ensure the spatial subdivision is not empty before calling these functions.
template<typename T>
virtual DtSpatialSubCellType& DtSpatialSubdivision< T >::back ( )
virtual
Returns
a reference (const or not) to the first or last spatial subdivision cell in the spatial subdivision.
Note
User must ensure the spatial subdivision is not empty before calling these functions.
template<typename T>
virtual const DtSpatialSubCellType& DtSpatialSubdivision< T >::back ( ) const
virtual
Returns
a reference (const or not) to the first or last spatial subdivision cell in the spatial subdivision.
Note
User must ensure the spatial subdivision is not empty before calling these functions.
template<typename T>
virtual const DtPoint& DtSpatialSubdivision< T >::origin ( ) const
virtual

Get/Set the origin of the spatial index (the point of lowest X, Y, Z)

template<typename T>
virtual void DtSpatialSubdivision< T >::setOrigin ( const DtPoint newOrigin)
virtual

Get/Set the origin of the spatial index (the point of lowest X, Y, Z)

template<typename T>
virtual unsigned int DtSpatialSubdivision< T >::cellCountX ( ) const
virtual
Returns
the cell count in the specified dimension.
template<typename T>
virtual unsigned int DtSpatialSubdivision< T >::cellCountY ( ) const
virtual
Returns
the cell count in the specified dimension.
template<typename T>
virtual unsigned int DtSpatialSubdivision< T >::cellCountZ ( ) const
virtual
Returns
the cell count in the specified dimension.
template<typename T>
virtual double DtSpatialSubdivision< T >::cellDx ( ) const
virtual
Returns
the size of each cell in the specified dimension.
template<typename T>
virtual double DtSpatialSubdivision< T >::cellDy ( ) const
virtual
Returns
the size of each cell in the specified dimension.
template<typename T>
virtual double DtSpatialSubdivision< T >::cellDz ( ) const
virtual
Returns
the size of each cell in the specified dimension.
template<typename T>
virtual bool DtSpatialSubdivision< T >::cell ( double  x,
double  y,
double  z,
DtSpatialSubCellType *&  cell 
)
virtual

Get the cell that contains the given coordinate if the coordinate lies within the spatial subdivision.

If the specified point lies within the spatial subdivision, the function sets the specified point to point to the cell and returns true.

Returns
A boolean indicating whether or not the point lies within the spatial subdivision. If it does not, the cell pointer is not set.
template<typename T>
virtual bool DtSpatialSubdivision< T >::cell ( double  x,
double  y,
double  z,
const DtSpatialSubCellType *&  cell 
) const
virtual

Get the cell that contains the given coordinate if the coordinate lies within the spatial subdivision.

If the specified point lies within the spatial subdivision, the function sets the specified point to point to the cell and returns true.

Returns
A boolean indicating whether or not the point lies within the spatial subdivision. If it does not, the cell pointer is not set.
template<typename T>
virtual bool DtSpatialSubdivision< T >::cell ( const DtPoint containing,
DtSpatialSubCellType *&  cell 
)
virtual

Get the cell that contains the given coordinate if the coordinate lies within the spatial subdivision.

If the specified point lies within the spatial subdivision, the function sets the specified point to point to the cell and returns true.

Returns
A boolean indicating whether or not the point lies within the spatial subdivision. If it does not, the cell pointer is not set.
template<typename T>
virtual bool DtSpatialSubdivision< T >::cell ( const DtPoint containing,
const DtSpatialSubCellType *&  cell 
) const
virtual

Get the cell that contains the given coordinate if the coordinate lies within the spatial subdivision.

If the specified point lies within the spatial subdivision, the function sets the specified point to point to the cell and returns true.

Returns
A boolean indicating whether or not the point lies within the spatial subdivision. If it does not, the cell pointer is not set.
template<typename T>
virtual void DtSpatialSubdivision< T >::offsetToIndices ( const DtPoint offset,
DtSpatialSubCellIndex xIndex,
DtSpatialSubCellIndex yIndex,
DtSpatialSubCellIndex zIndex 
) const
virtual

Given an offset vector (local coordinate - origin), return the cell index values.

Parameters
xIndexThe index in X, of the specified point. Set by the function.
yIndexThe index in Y, of the specified point. Set by the function.
zIndexThe index in Z, of the specified point. Set by the function.
Note
There is no guarantee that the resulting indices are inside the spatial subdivision.
template<typename T>
virtual bool DtSpatialSubdivision< T >::indexIsValid ( DtSpatialSubCellIndex  index) const
virtual

Check if the given index values are within the spatial subdivision.

Returns
a boolean signifying whether or not the specified index/indices are valid (refer to cells inside the spatial subdivision)
template<typename T>
virtual bool DtSpatialSubdivision< T >::indicesAreValid ( DtSpatialSubCellIndex  xIndex,
DtSpatialSubCellIndex  yIndex,
DtSpatialSubCellIndex  zIndex 
) const
virtual
template<typename T>
virtual int DtSpatialSubdivision< T >::sizeInBytes ( ) const
virtual
template<typename T>
bool DtSpatialSubdivision< T >::testInvariant ( ) const
protected

Tests the class invariant. Called at the beginning of every public member function and at the end of all non-const public member functions.

template<typename T>
double DtSpatialSubdivision< T >::inverseCellDx ( ) const
protected
Returns
the inverse of the size of each cell in the specified dimension.
Note
If the dimension is 0, then the function returns 0.0 as a default.
These should not be called when the dimension is 0, even though they return 0.0 to be safe.
template<typename T>
double DtSpatialSubdivision< T >::inverseCellDy ( ) const
protected
Returns
the inverse of the size of each cell in the specified dimension.
Note
If the dimension is 0, then the function returns 0.0 as a default.
These should not be called when the dimension is 0, even though they return 0.0 to be safe.
template<typename T>
double DtSpatialSubdivision< T >::inverseCellDz ( ) const
protected
Returns
the inverse of the size of each cell in the specified dimension.
Note
If the dimension is 0, then the function returns 0.0 as a default.
These should not be called when the dimension is 0, even though they return 0.0 to be safe.
template<typename T>
void DtSpatialSubdivision< T >::calculateMinMaxOffsets ( )
protected

Calculates the minimum and maximum sizes, in each dimension, of any offset that is to be translated into an index. An offset that contains any dimension larger or smaller (negative) than these will result in rollover problems and the wrong index being calculated. Since this is a function of std::limits<>max() and the cell delta in the appropriate dimension.

template<typename T>
void DtSpatialSubdivision< T >::calculateInverseDeltas ( )
protected

Calculates the inverse of the cell deltas in each dimension. Used every time an index is calculated from an offset.

Member Data Documentation

template<typename T>
DtPoint DtSpatialSubdivision< T >::myOrigin
protected
template<typename T>
unsigned int DtSpatialSubdivision< T >::myCellCountX
protected
template<typename T>
unsigned int DtSpatialSubdivision< T >::myCellCountY
protected
template<typename T>
unsigned int DtSpatialSubdivision< T >::myCellCountZ
protected
template<typename T>
double DtSpatialSubdivision< T >::myCellDx
protected
template<typename T>
double DtSpatialSubdivision< T >::myCellDy
protected
template<typename T>
double DtSpatialSubdivision< T >::myCellDz
protected
template<typename T>
double DtSpatialSubdivision< T >::myInverseCellDx
protected

These are used instead of dividing when calculating indexes from an offset.

template<typename T>
double DtSpatialSubdivision< T >::myInverseCellDy
protected

These are used instead of dividing when calculating indexes from an offset.

template<typename T>
double DtSpatialSubdivision< T >::myInverseCellDz
protected

These are used instead of dividing when calculating indexes from an offset.

template<typename T>
double DtSpatialSubdivision< T >::myMaxOffsetX
protected

These are the maximum sizes, in each dimension, of any offset that is to be translated into and index. An offset that contains any dimension larger than these will result in rollover problems and the wrong index being calculated.

template<typename T>
double DtSpatialSubdivision< T >::myMaxOffsetY
protected

These are the maximum sizes, in each dimension, of any offset that is to be translated into and index. An offset that contains any dimension larger than these will result in rollover problems and the wrong index being calculated.

template<typename T>
double DtSpatialSubdivision< T >::myMaxOffsetZ
protected

These are the maximum sizes, in each dimension, of any offset that is to be translated into and index. An offset that contains any dimension larger than these will result in rollover problems and the wrong index being calculated.

template<typename T>
double DtSpatialSubdivision< T >::myMinOffsetX
protected
template<typename T>
double DtSpatialSubdivision< T >::myMinOffsetY
protected
template<typename T>
double DtSpatialSubdivision< T >::myMinOffsetZ
protected
template<typename T>
std::vector< DtSpatialSubCellType > DtSpatialSubdivision< T >::myCells
protected

The documentation for this class was generated from the following file:

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)