octree-based spatial search object to quickly locate cells
More...
#include <vtkCellLocator.h>
Inherits vtkAbstractCellLocator.
|
virtual int | IsA (const char *type) |
|
vtkCellLocator * | NewInstance () const |
|
void | PrintSelf (ostream &os, vtkIndent indent) |
|
virtual vtkIdList * | GetCells (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) |
|
|
virtual vtkObjectBase * | NewInstanceInternal () 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]) |
|
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.
vtkCellLocator::vtkCellLocator |
( |
| ) |
|
|
protected |
vtkCellLocator::~vtkCellLocator |
( |
| ) |
|
|
protected |
static int vtkCellLocator::IsTypeOf |
( |
const char * |
type | ) |
|
|
static |
virtual int vtkCellLocator::IsA |
( |
const char * |
type | ) |
|
|
virtual |
virtual vtkObjectBase* vtkCellLocator::NewInstanceInternal |
( |
| ) |
const |
|
protectedvirtual |
void vtkCellLocator::PrintSelf |
( |
ostream & |
os, |
|
|
vtkIndent |
indent |
|
) |
| |
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 |
|
) |
| |
|
inlinevirtual |
reimplemented from vtkAbstractCellLocator to support bad compilers
Definition at line 81 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 93 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 105 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 127 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 154 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 166 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 210 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 |
int vtkCellLocator::NumberOfOctants |
|
protected |
double vtkCellLocator::Bounds[6] |
|
protected |
int vtkCellLocator::NumberOfParents |
|
protected |
double vtkCellLocator::H[3] |
|
protected |
int vtkCellLocator::NumberOfDivisions |
|
protected |
vtkNeighborCells* vtkCellLocator::Buckets |
|
protected |
unsigned char* vtkCellLocator::CellHasBeenVisited |
|
protected |
unsigned char vtkCellLocator::QueryNumber |
|
protected |
double vtkCellLocator::OctantBounds[6] |
|
protected |
The documentation for this class was generated from the following file: