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>

Inheritance diagram for vtkCellLocator:
[legend]
Collaboration diagram for vtkCellLocator:
[legend]

Public Types

typedef vtkAbstractCellLocator Superclass
 
- Public Types inherited from vtkAbstractCellLocator
typedef vtkLocator Superclass
 
- Public Types inherited from vtkLocator
typedef vtkObject Superclass
 
- Public Types inherited from vtkObject
typedef vtkObjectBase Superclass
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkCellLocatorNewInstance () const
 
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, vtkIdType &cellId, vtkGenericCell *cell)
 
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], vtkGenericCell *cell, vtkIdType &cellId, int &subId, double &dist2, int &inside)
 
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)
 
- Public Member Functions inherited from vtkAbstractCellLocator
vtkAbstractCellLocatorNewInstance () const
 
virtual vtkIdType FindCell (double x[3])
 
virtual bool InsideCellBounds (double x[3], vtkIdType cell_ID)
 
virtual void SetNumberOfCellsPerNode (int)
 
virtual int GetNumberOfCellsPerNode ()
 
virtual void SetCacheCellBounds (int)
 
virtual int GetCacheCellBounds ()
 
virtual void CacheCellBoundsOn ()
 
virtual void CacheCellBoundsOff ()
 
virtual void SetRetainCellLists (int)
 
virtual int GetRetainCellLists ()
 
virtual void RetainCellListsOn ()
 
virtual void RetainCellListsOff ()
 
virtual void SetLazyEvaluation (int)
 
virtual int GetLazyEvaluation ()
 
virtual void LazyEvaluationOn ()
 
virtual void LazyEvaluationOff ()
 
virtual void SetUseExistingSearchStructure (int)
 
virtual int GetUseExistingSearchStructure ()
 
virtual void UseExistingSearchStructureOn ()
 
virtual void UseExistingSearchStructureOff ()
 
virtual int IntersectWithLine (double p1[3], double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId)
 
virtual int IntersectWithLine (double p1[3], double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId, vtkIdType &cellId)
 
virtual int IntersectWithLine (const double p1[3], const double p2[3], vtkPoints *points, vtkIdList *cellIds)
 
virtual void FindClosestPoint (double x[3], double closestPoint[3], 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)
 
- Public Member Functions inherited from vtkLocator
vtkLocatorNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
virtual void Update ()
 
virtual void Initialize ()
 
virtual void SetDataSet (vtkDataSet *)
 
virtual vtkDataSetGetDataSet ()
 
virtual void SetMaxLevel (int)
 
virtual int GetMaxLevel ()
 
virtual int GetLevel ()
 
virtual void SetAutomatic (int)
 
virtual int GetAutomatic ()
 
virtual void AutomaticOn ()
 
virtual void AutomaticOff ()
 
virtual void SetTolerance (double)
 
virtual double GetTolerance ()
 
virtual unsigned long GetBuildTime ()
 
virtual void Register (vtkObjectBase *o)
 
virtual void UnRegister (vtkObjectBase *o)
 
- Public Member Functions inherited from vtkObject
vtkObjectNewInstance () const
 
virtual void DebugOn ()
 
virtual void DebugOff ()
 
bool GetDebug ()
 
void SetDebug (bool debugFlag)
 
virtual void Modified ()
 
virtual unsigned long GetMTime ()
 
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
 
unsigned long AddObserver (const char *event, vtkCommand *, float priority=0.0f)
 
vtkCommandGetCommand (unsigned long tag)
 
void RemoveObserver (vtkCommand *)
 
void RemoveObservers (unsigned long event, vtkCommand *)
 
void RemoveObservers (const char *event, vtkCommand *)
 
int HasObserver (unsigned long event, vtkCommand *)
 
int HasObserver (const char *event, vtkCommand *)
 
void RemoveObserver (unsigned long tag)
 
void RemoveObservers (unsigned long event)
 
void RemoveObservers (const char *event)
 
void RemoveAllObservers ()
 
int HasObserver (unsigned long event)
 
int HasObserver (const char *event)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
int InvokeEvent (unsigned long event, void *callData)
 
int InvokeEvent (const char *event, void *callData)
 
int InvokeEvent (unsigned long event)
 
int InvokeEvent (const char *event)
 
- Public Member Functions inherited from vtkObjectBase
const char * GetClassName () const
 
virtual void Delete ()
 
virtual void FastDelete ()
 
void Print (ostream &os)
 
void SetReferenceCount (int)
 
void PrintRevisions (ostream &)
 
virtual void PrintHeader (ostream &os, vtkIndent indent)
 
virtual void PrintTrailer (ostream &os, vtkIndent indent)
 
int GetReferenceCount ()
 

Static Public Member Functions

static int IsTypeOf (const char *type)
 
static vtkCellLocatorSafeDownCast (vtkObjectBase *o)
 
static vtkCellLocatorNew ()
 
- Static Public Member Functions inherited from vtkAbstractCellLocator
static int IsTypeOf (const char *type)
 
static vtkAbstractCellLocatorSafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkLocator
static int IsTypeOf (const char *type)
 
static vtkLocatorSafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkObject
static int IsTypeOf (const char *type)
 
static vtkObjectSafeDownCast (vtkObjectBase *o)
 
static vtkObjectNew ()
 
static void BreakOnError ()
 
static void SetGlobalWarningDisplay (int val)
 
static void GlobalWarningDisplayOn ()
 
static void GlobalWarningDisplayOff ()
 
static int GetGlobalWarningDisplay ()
 
- Static Public Member Functions inherited from vtkObjectBase
static int IsTypeOf (const char *name)
 
static vtkObjectBaseNew ()
 

Protected Member Functions

virtual vtkObjectBaseNewInstanceInternal () const
 
 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], double tol=0.0)
 
- Protected Member Functions inherited from vtkAbstractCellLocator
 vtkAbstractCellLocator ()
 
 ~vtkAbstractCellLocator ()
 
virtual bool StoreCellBounds ()
 
virtual void FreeCellBounds ()
 
- Protected Member Functions inherited from vtkLocator
virtual void ReportReferences (vtkGarbageCollector *)
 
 vtkLocator ()
 
 ~vtkLocator ()
 
- Protected Member Functions inherited from vtkObject
 vtkObject ()
 
virtual ~vtkObject ()
 
virtual void RegisterInternal (vtkObjectBase *, int check)
 
virtual void UnRegisterInternal (vtkObjectBase *, int check)
 
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
 
void InternalReleaseFocus ()
 
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
 
virtual ~vtkObjectBase ()
 
virtual void CollectRevisions (ostream &)
 
 vtkObjectBase (const vtkObjectBase &)
 
void operator= (const vtkObjectBase &)
 

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]
 
- Protected Attributes inherited from vtkAbstractCellLocator
int NumberOfCellsPerNode
 
int RetainCellLists
 
int CacheCellBounds
 
int LazyEvaluation
 
int UseExistingSearchStructure
 
vtkGenericCellGenericCell
 
double(* CellBounds )[6]
 
- Protected Attributes inherited from vtkLocator
vtkDataSetDataSet
 
int Automatic
 
double Tolerance
 
int MaxLevel
 
int Level
 
vtkTimeStamp BuildTime
 
- Protected Attributes inherited from vtkObject
bool Debug
 
vtkTimeStamp MTime
 
vtkSubjectHelper * SubjectHelper
 
- Protected Attributes inherited from vtkObjectBase
vtkAtomicInt32 ReferenceCount
 
vtkWeakPointerBase ** WeakPointers
 

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 51 of file vtkCellLocator.h.

Member Typedef Documentation

Definition at line 54 of file vtkCellLocator.h.

Constructor & Destructor Documentation

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

Member Function Documentation

static int vtkCellLocator::IsTypeOf ( const char *  type)
static
virtual int vtkCellLocator::IsA ( const char *  name)
virtual

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkAbstractCellLocator.

static vtkCellLocator* vtkCellLocator::SafeDownCast ( vtkObjectBase o)
static
virtual vtkObjectBase* vtkCellLocator::NewInstanceInternal ( ) const
protectedvirtual

Reimplemented from vtkAbstractCellLocator.

vtkCellLocator* vtkCellLocator::NewInstance ( ) const
void vtkCellLocator::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
virtual

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkAbstractCellLocator.

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 63 of file vtkCellLocator.h.

int vtkCellLocator::GetNumberOfCellsPerBucket ( )
inline

Specify the average number of cells in each octant.

Definition at line 65 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

Reimplemented from vtkAbstractCellLocator.

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.

Reimplemented from vtkAbstractCellLocator.

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

Reimplemented from 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],
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.

Reimplemented from vtkAbstractCellLocator.

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.

Reimplemented from vtkAbstractCellLocator.

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.

Reimplemented from vtkAbstractCellLocator.

virtual void vtkCellLocator::FreeSearchStructure ( )
virtual

Satisfy vtkLocator abstract interface.

Implements vtkLocator.

virtual void vtkCellLocator::BuildLocator ( )
virtual

Satisfy vtkLocator abstract interface.

Implements vtkLocator.

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.

Implements vtkLocator.

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],
double  tol = 0.0 
)
inlineprotected

Definition at line 200 of file vtkCellLocator.h.

Member Data Documentation

int vtkCellLocator::NumberOfOctants
protected

Definition at line 180 of file vtkCellLocator.h.

double vtkCellLocator::Bounds[6]
protected

Definition at line 181 of file vtkCellLocator.h.

int vtkCellLocator::NumberOfParents
protected

Definition at line 182 of file vtkCellLocator.h.

double vtkCellLocator::H[3]
protected

Definition at line 183 of file vtkCellLocator.h.

int vtkCellLocator::NumberOfDivisions
protected

Definition at line 184 of file vtkCellLocator.h.

vtkIdList** vtkCellLocator::Tree
protected

Definition at line 185 of file vtkCellLocator.h.

vtkNeighborCells* vtkCellLocator::Buckets
protected

Definition at line 194 of file vtkCellLocator.h.

unsigned char* vtkCellLocator::CellHasBeenVisited
protected

Definition at line 195 of file vtkCellLocator.h.

unsigned char vtkCellLocator::QueryNumber
protected

Definition at line 196 of file vtkCellLocator.h.

double vtkCellLocator::OctantBounds[6]
protected

Definition at line 199 of file vtkCellLocator.h.


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