VTK  9.2.6
vtkLinearTransformCellLocator.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkLinearTransformCellLocator.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
41 #ifndef vtkLinearTransformCellLocator_h
42 #define vtkLinearTransformCellLocator_h
43 
44 #include "vtkAbstractCellLocator.h"
45 #include "vtkFiltersFlowPathsModule.h" // For export macro
46 #include "vtkSmartPointer.h" // For vtkSmartPointer
47 
48 class vtkTransform;
49 
50 class VTKFILTERSFLOWPATHS_EXPORT vtkLinearTransformCellLocator : public vtkAbstractCellLocator
51 {
52 public:
54 
59  void PrintSelf(ostream& os, vtkIndent indent) override;
61 
63 
68  virtual void SetCellLocator(vtkAbstractCellLocator* locator);
69  vtkGetObjectMacro(CellLocator, vtkAbstractCellLocator);
71 
73 
80  vtkSetMacro(UseAllPoints, bool);
81  vtkBooleanMacro(UseAllPoints, bool);
82  vtkGetMacro(UseAllPoints, bool);
84 
89  vtkGetMacro(IsLinearTransformation, bool);
90 
91  // Re-use any superclass signatures that we don't override.
96 
103  int IntersectWithLine(const double p1[3], const double p2[3], double tol, double& t, double x[3],
104  double pcoords[3], int& subId, vtkIdType& cellId, vtkGenericCell* cell) override;
105 
115  int IntersectWithLine(const double p1[3], const double p2[3], const double tol, vtkPoints* points,
116  vtkIdList* cellIds, vtkGenericCell* cell) override;
117 
125  void FindClosestPoint(const double x[3], double closestPoint[3], vtkGenericCell* cell,
126  vtkIdType& cellId, int& subId, double& dist2) override
127  {
128  this->Superclass::FindClosestPoint(x, closestPoint, cell, cellId, subId, dist2);
129  }
130 
141  vtkIdType FindClosestPointWithinRadius(double x[3], double radius, double closestPoint[3],
142  vtkGenericCell* cell, vtkIdType& cellId, int& subId, double& dist2, int& inside) override;
143 
150  void FindCellsWithinBounds(double* bbox, vtkIdList* cells) override;
151 
159  const double p1[3], const double p2[3], double tolerance, vtkIdList* cellsIds) override
160  {
161  this->Superclass::FindCellsAlongLine(p1, p2, tolerance, cellsIds);
162  }
163 
171  const double o[3], const double n[3], double tolerance, vtkIdList* cells) override;
172 
180  vtkIdType FindCell(double x[3], double vtkNotUsed(tol2), vtkGenericCell* cell, int& subId,
181  double pcoords[3], double* weights) override;
182 
187  bool InsideCellBounds(double x[3], vtkIdType cellId) override;
188 
190 
193  void GenerateRepresentation(int level, vtkPolyData* pd) override;
194  void FreeSearchStructure() override;
195  void BuildLocator() override;
196  void ForceBuildLocator() override;
198 
202  void ShallowCopy(vtkAbstractCellLocator* locator) override;
203 
204 protected:
207 
208  void BuildLocatorInternal() override;
209 
211 
214  bool IsLinearTransformation = false;
215  bool UseAllPoints = false;
216 
218 
219 private:
221  void operator=(const vtkLinearTransformCellLocator&) = delete;
222 };
223 
224 #endif
an abstract base class for locators which find cells
virtual vtkIdType FindCell(double x[3])
Returns the Id of the cell containing the point, returns -1 if no cell found.
virtual void FindClosestPoint(const double x[3], double closestPoint[3], vtkIdType &cellId, int &subId, double &dist2)
Return the closest point and the cell which is closest to the point x.
virtual vtkIdType FindClosestPointWithinRadius(double x[3], double radius, double closestPoint[3], vtkIdType &cellId, int &subId, double &dist2)
Return the closest point within a specified radius and the cell which is closest to the point x.
virtual int IntersectWithLine(const double p1[3], const double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId)
Return intersection point (if any) of finite line with cells contained in cell locator.
provides thread-safe access to cells
list of point or cell ids
Definition: vtkIdList.h:143
a simple class to control print indentation
Definition: vtkIndent.h:119
Cell locator adaptor to perform cell Location on datasets that are a linear transformation of the ori...
void ForceBuildLocator() override
Satisfy vtkLocator abstract interface.
bool InsideCellBounds(double x[3], vtkIdType cellId) override
Quickly test if a point is inside the bounds of a particular cell.
void FindCellsAlongPlane(const double o[3], const double n[3], double tolerance, vtkIdList *cells) override
Take the passed line segment and intersect it with the data set.
vtkSmartPointer< vtkTransform > Transform
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods to instantiate, print and obtain type-related information.
void GenerateRepresentation(int level, vtkPolyData *pd) override
Satisfy vtkLocator abstract interface.
void FindCellsWithinBounds(double *bbox, vtkIdList *cells) override
Return a list of unique cell ids inside of a given bounding box.
void FindCellsAlongLine(const double p1[3], const double p2[3], double tolerance, vtkIdList *cellsIds) override
Take the passed line segment and intersect it with the data set.
vtkIdType FindCell(double x[3], double vtkNotUsed(tol2), vtkGenericCell *cell, int &subId, double pcoords[3], double *weights) override
Find the cell containing a given point.
int IntersectWithLine(const double p1[3], const double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId, vtkIdType &cellId, vtkGenericCell *cell) override
Return intersection point (if any) AND the cell which was intersected by the finite line.
vtkSmartPointer< vtkTransform > InverseTransform
~vtkLinearTransformCellLocator() override
void ShallowCopy(vtkAbstractCellLocator *locator) override
Shallow copy of a vtkLinearTransformCellLocator.
void FindClosestPoint(const double x[3], double closestPoint[3], vtkGenericCell *cell, vtkIdType &cellId, int &subId, double &dist2) override
Return the closest point and the cell which is closest to the point x.
void FreeSearchStructure() override
Satisfy vtkLocator abstract interface.
void BuildLocatorInternal() override
This function is not pure virtual to maintain backwards compatibility.
vtkIdType FindClosestPointWithinRadius(double x[3], double radius, double closestPoint[3], vtkGenericCell *cell, vtkIdType &cellId, int &subId, double &dist2, int &inside) override
Return the closest point within a specified radius and the cell which is closest to the point x.
void BuildLocator() override
Satisfy vtkLocator abstract interface.
virtual void SetCellLocator(vtkAbstractCellLocator *locator)
Set/Get the cell locator to be used internally.
int IntersectWithLine(const double p1[3], const double p2[3], const double tol, vtkPoints *points, vtkIdList *cellIds, vtkGenericCell *cell) override
Take the passed line segment and intersect it with the data set.
static vtkLinearTransformCellLocator * New()
Standard methods to instantiate, print and obtain type-related information.
represent and manipulate 3D points
Definition: vtkPoints.h:149
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:200
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:170
@ points
Definition: vtkX3D.h:452
@ level
Definition: vtkX3D.h:401
@ radius
Definition: vtkX3D.h:258
int vtkIdType
Definition: vtkType.h:332