VTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkCellLocator Class Reference

octree-based spatial search object to quickly locate cells More...

#include <vtkCellLocator.h>

Inherits vtkAbstractCellLocator.

Collaboration diagram for vtkCellLocator:
[legend]

Public Types

typedef vtkAbstractCellLocator Superclass
 

Public Member Functions

virtual const char * GetClassName ()
 
virtual int IsA (const char *type)
 
void PrintSelf (ostream &os, vtkIndent indent)
 
virtual vtkIdListGetCells (int bucket)
 
virtual int GetNumberOfBuckets (void)
 
virtual void FindCellsWithinBounds (double *bbox, vtkIdList *cells)
 
void SetNumberOfCellsPerBucket (int N)
 
int GetNumberOfCellsPerBucket ()
 
virtual int IntersectWithLine (double a0[3], double a1[3], double tol, double &t, double x[3], double pcoords[3], int &subId)
 
virtual int IntersectWithLine (double a0[3], double a1[3], double tol, double &t, double x[3], double pcoords[3], int &subId, vtkIdType &cellId)
 
virtual int IntersectWithLine (const double a0[3], const double a1[3], vtkPoints *points, vtkIdList *cellIds)
 
virtual int IntersectWithLine (double a0[3], double a1[3], double tol, double &t, double x[3], double pcoords[3], int &subId, vtkIdType &cellId, vtkGenericCell *cell)
 
virtual void FindClosestPoint (double x[3], double closestPoint[3], vtkIdType &cellId, int &subId, double &dist2)
 
virtual void FindClosestPoint (double x[3], double closestPoint[3], vtkGenericCell *cell, vtkIdType &cellId, int &subId, double &dist2)
 
virtual vtkIdType FindClosestPointWithinRadius (double x[3], double radius, double closestPoint[3], vtkIdType &cellId, int &subId, double &dist2)
 
virtual vtkIdType FindClosestPointWithinRadius (double x[3], double radius, double closestPoint[3], vtkGenericCell *cell, vtkIdType &cellId, int &subId, double &dist2)
 
virtual vtkIdType FindClosestPointWithinRadius (double x[3], double radius, double closestPoint[3], vtkGenericCell *cell, vtkIdType &cellId, int &subId, double &dist2, int &inside)
 
virtual vtkIdType FindCell (double x[3])
 
virtual vtkIdType FindCell (double x[3], double tol2, vtkGenericCell *GenCell, double pcoords[3], double *weights)
 
virtual void FindCellsAlongLine (double p1[3], double p2[3], double tolerance, vtkIdList *cells)
 
virtual void FreeSearchStructure ()
 
virtual void BuildLocator ()
 
virtual void BuildLocatorIfNeeded ()
 
virtual void ForceBuildLocator ()
 
virtual void BuildLocatorInternal ()
 
virtual void GenerateRepresentation (int level, vtkPolyData *pd)
 

Static Public Member Functions

static int IsTypeOf (const char *type)
 
static vtkCellLocatorSafeDownCast (vtkObject *o)
 
static vtkCellLocatorNew ()
 

Protected Member Functions

 vtkCellLocator ()
 
 ~vtkCellLocator ()
 
void GetBucketNeighbors (int ijk[3], int ndivs, int level)
 
void GetOverlappingBuckets (double x[3], int ijk[3], double dist, int prevMinLevel[3], int prevMaxLevel[3])
 
void ClearCellHasBeenVisited ()
 
void ClearCellHasBeenVisited (int id)
 
double Distance2ToBucket (double x[3], int nei[3])
 
double Distance2ToBounds (double x[3], double bounds[6])
 
void MarkParents (void *, int, int, int, int, int)
 
void GetChildren (int idx, int level, int children[8])
 
int GenerateIndex (int offset, int numDivs, int i, int j, int k, vtkIdType &idx)
 
void GenerateFace (int face, int numDivs, int i, int j, int k, vtkPoints *pts, vtkCellArray *polys)
 
void ComputeOctantBounds (int i, int j, int k)
 
int IsInOctantBounds (double x[3])
 

Protected Attributes

int NumberOfOctants
 
double Bounds [6]
 
int NumberOfParents
 
double H [3]
 
int NumberOfDivisions
 
vtkIdList ** Tree
 
vtkNeighborCells * Buckets
 
unsigned char * CellHasBeenVisited
 
unsigned char QueryNumber
 
double OctantBounds [6]
 

Detailed Description

octree-based spatial search object to quickly locate cells

vtkCellLocator is a spatial search object to quickly locate cells in 3D. vtkCellLocator uses a uniform-level octree subdivision, where each octant (an octant is also referred to as a bucket) carries an indication of whether it is empty or not, and each leaf octant carries a list of the cells inside of it. (An octant is not empty if it has one or more cells inside of it.) Typical operations are intersection with a line to return candidate cells, or intersection with another vtkCellLocator to return candidate cells.

Warning
Many other types of spatial locators have been developed, such as variable depth octrees and kd-trees. These are often more efficient for the operations described here. vtkCellLocator has been designed for subclassing; so these locators can be derived if necessary.
See Also
vtkLocator vtkPointLocator vtkOBBTree
Examples:
vtkCellLocator (Examples)
Tests:
vtkCellLocator (Tests)

Definition at line 50 of file vtkCellLocator.h.

Member Typedef Documentation

typedef vtkAbstractCellLocator vtkCellLocator::Superclass

Definition at line 53 of file vtkCellLocator.h.

Constructor & Destructor Documentation

vtkCellLocator::vtkCellLocator ( )
protected
vtkCellLocator::~vtkCellLocator ( )
protected

Member Function Documentation

virtual const char* vtkCellLocator::GetClassName ( )
virtual
static int vtkCellLocator::IsTypeOf ( const char *  type)
static
virtual int vtkCellLocator::IsA ( const char *  type)
virtual
static vtkCellLocator* vtkCellLocator::SafeDownCast ( vtkObject o)
static
void vtkCellLocator::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
static vtkCellLocator* vtkCellLocator::New ( )
static

Construct with automatic computation of divisions, averaging 25 cells per bucket.

void vtkCellLocator::SetNumberOfCellsPerBucket ( int  N)
inline

Specify the average number of cells in each octant.

Definition at line 62 of file vtkCellLocator.h.

int vtkCellLocator::GetNumberOfCellsPerBucket ( )
inline

Specify the average number of cells in each octant.

Definition at line 64 of file vtkCellLocator.h.

virtual int vtkCellLocator::IntersectWithLine ( double  a0[3],
double  a1[3],
double  tol,
double &  t,
double  x[3],
double  pcoords[3],
int &  subId 
)
inlinevirtual

reimplemented from vtkAbstractCellLocator to support bad compilers

Definition at line 80 of file vtkCellLocator.h.

virtual int vtkCellLocator::IntersectWithLine ( double  a0[3],
double  a1[3],
double  tol,
double &  t,
double  x[3],
double  pcoords[3],
int &  subId,
vtkIdType cellId 
)
inlinevirtual

reimplemented from vtkAbstractCellLocator to support bad compilers

Definition at line 92 of file vtkCellLocator.h.

virtual int vtkCellLocator::IntersectWithLine ( const double  a0[3],
const double  a1[3],
vtkPoints points,
vtkIdList cellIds 
)
inlinevirtual

reimplemented from vtkAbstractCellLocator to support bad compilers

Definition at line 104 of file vtkCellLocator.h.

virtual int vtkCellLocator::IntersectWithLine ( double  a0[3],
double  a1[3],
double  tol,
double &  t,
double  x[3],
double  pcoords[3],
int &  subId,
vtkIdType cellId,
vtkGenericCell cell 
)
virtual

Return intersection point (if any) AND the cell which was intersected by the finite line. The cell is returned as a cell id and as a generic cell. For other IntersectWithLine signatures, see vtkAbstractCellLocator

virtual void vtkCellLocator::FindClosestPoint ( double  x[3],
double  closestPoint[3],
vtkIdType cellId,
int &  subId,
double &  dist2 
)
inlinevirtual

reimplemented from vtkAbstractCellLocator to support bad compilers

Definition at line 126 of file vtkCellLocator.h.

virtual void vtkCellLocator::FindClosestPoint ( double  x[3],
double  closestPoint[3],
vtkGenericCell cell,
vtkIdType cellId,
int &  subId,
double &  dist2 
)
virtual

Return the closest point and the cell which is closest to the point x. The closest point is somewhere on a cell, it need not be one of the vertices of the cell. This version takes in a vtkGenericCell to avoid allocating and deallocating the cell. This is much faster than the version which does not take a *cell, especially when this function is called many times in a row such as by a for loop, where the allocation and deallocation can be done only once outside the for loop. If a cell is found, "cell" contains the points and ptIds for the cell "cellId" upon exit.

virtual vtkIdType vtkCellLocator::FindClosestPointWithinRadius ( double  x[3],
double  radius,
double  closestPoint[3],
vtkIdType cellId,
int &  subId,
double &  dist2 
)
inlinevirtual

reimplemented from vtkAbstractCellLocator to support bad compilers

Definition at line 153 of file vtkCellLocator.h.

virtual vtkIdType vtkCellLocator::FindClosestPointWithinRadius ( double  x[3],
double  radius,
double  closestPoint[3],
vtkGenericCell cell,
vtkIdType cellId,
int &  subId,
double &  dist2 
)
inlinevirtual

reimplemented from vtkAbstractCellLocator to support bad compilers

Definition at line 165 of file vtkCellLocator.h.

virtual vtkIdType vtkCellLocator::FindClosestPointWithinRadius ( double  x[3],
double  radius,
double  closestPoint[3],
vtkGenericCell cell,
vtkIdType cellId,
int &  subId,
double &  dist2,
int &  inside 
)
virtual

Return the closest point within a specified radius and the cell which is closest to the point x. The closest point is somewhere on a cell, it need not be one of the vertices of the cell. This method returns 1 if a point is found within the specified radius. If there are no cells within the specified radius, the method returns 0 and the values of closestPoint, cellId, subId, and dist2 are undefined. This version takes in a vtkGenericCell to avoid allocating and deallocating the cell. This is much faster than the version which does not take a *cell, especially when this function is called many times in a row such as by a for loop, where the allocation and dealloction can be done only once outside the for loop. If a closest point is found, "cell" contains the points and ptIds for the cell "cellId" upon exit. If a closest point is found, inside returns the return value of the EvaluatePosition call to the closest cell; inside(=1) or outside(=0). For other FindClosestPointWithinRadius signatures, see vtkAbstractCellLocator

virtual vtkIdList* vtkCellLocator::GetCells ( int  bucket)
virtual

Get the cells in a particular bucket.

virtual int vtkCellLocator::GetNumberOfBuckets ( void  )
virtual

Return number of buckets available. Insure that the locator has been built before attempting to access buckets (octants).

virtual vtkIdType vtkCellLocator::FindCell ( double  x[3])
inlinevirtual

Returns the Id of the cell containing the point, returns -1 if no cell found. This interface uses a tolerance of zero

Definition at line 209 of file vtkCellLocator.h.

virtual vtkIdType vtkCellLocator::FindCell ( double  x[3],
double  tol2,
vtkGenericCell GenCell,
double  pcoords[3],
double *  weights 
)
virtual

Find the cell containing a given point. returns -1 if no cell found the cell parameters are copied into the supplied variables, a cell must be provided to store the information.

virtual void vtkCellLocator::FindCellsWithinBounds ( double *  bbox,
vtkIdList cells 
)
virtual

Return a list of unique cell ids inside of a given bounding box. The user must provide the vtkIdList to populate. This method returns data only after the locator has been built.

virtual void vtkCellLocator::FindCellsAlongLine ( double  p1[3],
double  p2[3],
double  tolerance,
vtkIdList cells 
)
virtual

Given a finite line defined by the two points (p1,p2), return the list of unique cell ids in the buckets containing the line. It is possible that an empty cell list is returned. The user must provide the vtkIdList to populate. This method returns data only after the locator has been built.

virtual void vtkCellLocator::FreeSearchStructure ( )
virtual

Satisfy vtkLocator abstract interface.

virtual void vtkCellLocator::BuildLocator ( )
virtual

Satisfy vtkLocator abstract interface.

virtual void vtkCellLocator::BuildLocatorIfNeeded ( )
virtual

Satisfy vtkLocator abstract interface.

virtual void vtkCellLocator::ForceBuildLocator ( )
virtual

Satisfy vtkLocator abstract interface.

virtual void vtkCellLocator::BuildLocatorInternal ( )
virtual

Satisfy vtkLocator abstract interface.

virtual void vtkCellLocator::GenerateRepresentation ( int  level,
vtkPolyData pd 
)
virtual

Satisfy vtkLocator abstract interface.

void vtkCellLocator::GetBucketNeighbors ( int  ijk[3],
int  ndivs,
int  level 
)
protected
void vtkCellLocator::GetOverlappingBuckets ( double  x[3],
int  ijk[3],
double  dist,
int  prevMinLevel[3],
int  prevMaxLevel[3] 
)
protected
void vtkCellLocator::ClearCellHasBeenVisited ( )
protected
void vtkCellLocator::ClearCellHasBeenVisited ( int  id)
protected
double vtkCellLocator::Distance2ToBucket ( double  x[3],
int  nei[3] 
)
protected
double vtkCellLocator::Distance2ToBounds ( double  x[3],
double  bounds[6] 
)
protected
void vtkCellLocator::MarkParents ( void *  ,
int  ,
int  ,
int  ,
int  ,
int   
)
protected
void vtkCellLocator::GetChildren ( int  idx,
int  level,
int  children[8] 
)
protected
int vtkCellLocator::GenerateIndex ( int  offset,
int  numDivs,
int  i,
int  j,
int  k,
vtkIdType idx 
)
protected
void vtkCellLocator::GenerateFace ( int  face,
int  numDivs,
int  i,
int  j,
int  k,
vtkPoints pts,
vtkCellArray polys 
)
protected
void vtkCellLocator::ComputeOctantBounds ( int  i,
int  j,
int  k 
)
protected
int vtkCellLocator::IsInOctantBounds ( double  x[3])
inlineprotected

Definition at line 281 of file vtkCellLocator.h.

Member Data Documentation

int vtkCellLocator::NumberOfOctants
protected

Definition at line 261 of file vtkCellLocator.h.

double vtkCellLocator::Bounds[6]
protected

Definition at line 262 of file vtkCellLocator.h.

int vtkCellLocator::NumberOfParents
protected

Definition at line 263 of file vtkCellLocator.h.

double vtkCellLocator::H[3]
protected

Definition at line 264 of file vtkCellLocator.h.

int vtkCellLocator::NumberOfDivisions
protected

Definition at line 265 of file vtkCellLocator.h.

vtkIdList** vtkCellLocator::Tree
protected

Definition at line 266 of file vtkCellLocator.h.

vtkNeighborCells* vtkCellLocator::Buckets
protected

Definition at line 275 of file vtkCellLocator.h.

unsigned char* vtkCellLocator::CellHasBeenVisited
protected

Definition at line 276 of file vtkCellLocator.h.

unsigned char vtkCellLocator::QueryNumber
protected

Definition at line 277 of file vtkCellLocator.h.

double vtkCellLocator::OctantBounds[6]
protected

Definition at line 280 of file vtkCellLocator.h.


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