28 #ifndef vtkAbstractCellLocator_h
29 #define vtkAbstractCellLocator_h
31 #include "vtkCommonDataModelModule.h"
39 VTK_ABI_NAMESPACE_BEGIN
58 vtkSetClampMacro(NumberOfCellsPerNode,
int, 1,
VTK_INT_MAX);
59 vtkGetMacro(NumberOfCellsPerNode,
int);
79 void ComputeCellBounds();
104 virtual
void LazyEvaluationOn() {}
106 virtual
void LazyEvaluationOff() {}
115 virtual int IntersectWithLine(
const double p1[3],
const double p2[3],
double tol,
double& t,
116 double x[3],
double pcoords[3],
int& subId);
124 virtual int IntersectWithLine(
const double p1[3],
const double p2[3],
double tol,
double& t,
125 double x[3],
double pcoords[3],
int& subId,
vtkIdType& cellId);
135 virtual int IntersectWithLine(
const double p1[3],
const double p2[3],
double tol,
double& t,
153 virtual int IntersectWithLine(
165 virtual int IntersectWithLine(
179 virtual int IntersectWithLine(
const double p1[3],
const double p2[3],
double tol,
192 virtual void FindClosestPoint(
193 const double x[3],
double closestPoint[3],
vtkIdType& cellId,
int& subId,
double& dist2);
207 virtual void FindClosestPoint(
const double x[3],
double closestPoint[3],
vtkGenericCell* cell,
208 vtkIdType& cellId,
int& subId,
double& dist2);
220 virtual vtkIdType FindClosestPointWithinRadius(
double x[3],
double radius,
double closestPoint[3],
221 vtkIdType& cellId,
int& subId,
double& dist2);
235 virtual vtkIdType FindClosestPointWithinRadius(
double x[3],
double radius,
double closestPoint[3],
252 virtual vtkIdType FindClosestPointWithinRadius(
double x[3],
double radius,
double closestPoint[3],
261 virtual void FindCellsWithinBounds(
double* bbox,
vtkIdList* cells);
274 virtual void FindCellsAlongLine(
275 const double p1[3],
const double p2[3],
double tolerance,
vtkIdList* cells);
286 virtual void FindCellsAlongPlane(
287 const double o[3],
const double n[3],
double tolerance,
vtkIdList* cells);
306 double x[3],
double tol2,
vtkGenericCell* GenCell,
double pcoords[3],
double* weights);
308 double pcoords[3],
double* weights);
316 virtual bool InsideCellBounds(
double x[3],
vtkIdType cell_ID);
335 virtual bool StoreCellBounds();
336 virtual void FreeCellBounds();
343 void UpdateInternalWeights();
357 static bool IsInBounds(
const double bounds[6],
const double x[3],
double tol = 0.0);
363 void GetCellBounds(
vtkIdType cellId,
double*& cellBoundsPtr);
378 VTK_ABI_NAMESPACE_END
#define VTK_DEPRECATED_IN_9_2_0(reason)
record modification and/or execution time
an abstract base class for locators which find cells
abstract base class for objects that accelerate spatial searches
void PrintSelf(ostream &os, vtkIndent indent) override
Standard type and print methods.
std::vector< double > Weights
This array is resized so that it can fit points from the cell hosting the most in the input data set...
vtkTypeBool CacheCellBounds
std::shared_ptr< std::vector< double > > CellBoundsSharedPtr
provides thread-safe access to cells
virtual void ShallowCopy(vtkAbstractCellLocator *)
Shallow copy of a vtkAbstractCellLocator.
a simple class to control print indentation
vtkNew< vtkGenericCell > GenericCell
list of point or cell ids
vtkTimeStamp WeightsTime
This time stamp helps us decide if we want to update internal Weights array size. ...
object to represent cell connectivity
vtkTypeBool RetainCellLists
represent and manipulate 3D points