VTK  9.1.0
vtkPointSet.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPointSet.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 =========================================================================*/
52 #ifndef vtkPointSet_h
53 #define vtkPointSet_h
54 
55 #include "vtkCommonDataModelModule.h" // For export macro
56 #include "vtkDataSet.h"
57 
58 #include "vtkCellTypes.h" // For GetCellType
59 #include "vtkEmptyCell.h" // For GetCell
60 #include "vtkGenericCell.h" // For GetCell
61 #include "vtkPoints.h" // Needed for inline methods
62 
65 
66 class VTKCOMMONDATAMODEL_EXPORT vtkPointSet : public vtkDataSet
67 {
68 public:
72  static vtkPointSet* New();
74 
76 
79  vtkTypeMacro(vtkPointSet, vtkDataSet);
80  void PrintSelf(ostream& os, vtkIndent indent) override;
82 
84 
93  vtkSetMacro(Editable, bool);
94  vtkGetMacro(Editable, bool);
95  vtkBooleanMacro(Editable, bool);
97 
101  void Initialize() override;
102 
106  void CopyStructure(vtkDataSet* pd) override;
107 
109 
112  vtkIdType GetNumberOfPoints() override;
113  void GetPoint(vtkIdType ptId, double x[3]) override { this->Points->GetPoint(ptId, x); }
114  vtkIdType FindPoint(double x[3]) override;
115  vtkIdType FindPoint(double x, double y, double z) { return this->vtkDataSet::FindPoint(x, y, z); }
116  vtkIdType FindCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
117  double pcoords[3], double* weights) override;
118  vtkIdType FindCell(double x[3], vtkCell* cell, vtkGenericCell* gencell, vtkIdType cellId,
119  double tol2, int& subId, double pcoords[3], double* weights) override;
121 
123 
126  vtkIdType GetNumberOfCells() override { return 0; }
127  int GetMaxCellSize() override { return 0; }
129 
130  using Superclass::GetCell;
135  vtkCell* GetCell(vtkIdType) override { return this->EmptyCell; }
136 
138 
141  void GetCellPoints(vtkIdType, vtkIdList* idList) override { idList->Reset(); }
142  void GetPointCells(vtkIdType, vtkIdList* idList) override { idList->Reset(); }
144 
148  void GetCell(vtkIdType, vtkGenericCell* cell) override { cell->SetCellTypeToEmptyCell(); }
149 
154  int GetCellType(vtkIdType) override { return VTK_EMPTY_CELL; }
155 
162  double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) override { return this->Points->GetPoint(ptId); }
163 
168 
170 
175  void BuildLocator() { this->BuildPointLocator(); }
177 
183 
185 
192  vtkGetObjectMacro(PointLocator, vtkAbstractPointLocator);
194 
196 
201  vtkGetObjectMacro(CellLocator, vtkAbstractCellLocator);
203 
207  vtkMTimeType GetMTime() override;
208 
212  void ComputeBounds() override;
213 
217  void Squeeze() override;
218 
220 
223  virtual void SetPoints(vtkPoints*);
224  vtkGetObjectMacro(Points, vtkPoints);
226 
235  unsigned long GetActualMemorySize() override;
236 
238 
241  void ShallowCopy(vtkDataObject* src) override;
242  void DeepCopy(vtkDataObject* src) override;
244 
246 
249  void Register(vtkObjectBase* o) override;
250  void UnRegister(vtkObjectBase* o) override;
252 
254 
258  static vtkPointSet* GetData(vtkInformationVector* v, int i = 0);
260 
261 protected:
263  ~vtkPointSet() override;
264 
265  bool Editable;
269 
271 
272 private:
273  void Cleanup();
274  vtkEmptyCell* EmptyCell;
275 
276  vtkPointSet(const vtkPointSet&) = delete;
277  void operator=(const vtkPointSet&) = delete;
278 };
279 
281 {
282  if (this->Points)
283  {
284  return this->Points->GetNumberOfPoints();
285  }
286  else
287  {
288  return 0;
289  }
290 }
291 
292 #endif
an abstract base class for locators which find cells
abstract class to quickly locate points in 3-space
Efficient cell iterator for vtkDataSet topologies.
abstract class to specify cell behavior
Definition: vtkCell.h:58
general representation of visualization data
Definition: vtkDataObject.h:60
abstract class to specify dataset behavior
Definition: vtkDataSet.h:57
virtual vtkIdType GetNumberOfPoints()=0
Determine the number of points composing the dataset.
vtkIdType FindPoint(double x, double y, double z)
Locate the closest point to the global coordinate x.
Definition: vtkDataSet.h:201
an empty cell used as a place-holder during processing
Definition: vtkEmptyCell.h:30
Detect and break reference loops.
provides thread-safe access to cells
void SetCellTypeToEmptyCell()
list of point or cell ids
Definition: vtkIdList.h:31
void Reset()
Reset to an empty state but retain previously allocated memory.
Definition: vtkIdList.h:145
a simple class to control print indentation
Definition: vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract base class for most VTK objects
Definition: vtkObjectBase.h:70
concrete class for storing a set of points
Definition: vtkPointSet.h:67
void GetCellPoints(vtkIdType, vtkIdList *idList) override
This method resets parameter idList, as there is no cell in a vtkPointSet.
Definition: vtkPointSet.h:141
void CopyStructure(vtkDataSet *pd) override
Copy the geometric structure of an input point set object.
void Initialize() override
Reset to an empty state and free any memory.
vtkIdType FindPoint(double x, double y, double z)
See vtkDataSet for additional information.
Definition: vtkPointSet.h:115
void GetPointCells(vtkIdType, vtkIdList *idList) override
This method resets parameter idList, as there is no cell in a vtkPointSet.
Definition: vtkPointSet.h:142
virtual void SetCellLocator(vtkAbstractCellLocator *)
Set / get an instance of vtkAbstractCellLocator which may be used when a vtkCellLocatorStrategy is us...
vtkCell * GetCell(vtkIdType) override
This method always return a vtkEmptyCell, as there is no cell in a vtkPointSet.
Definition: vtkPointSet.h:135
void BuildPointLocator()
Build the internal point locator .
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methdos for type information and printing.
virtual void SetPoints(vtkPoints *)
Specify point array to define point coordinates.
~vtkPointSet() override
static vtkPointSet * ExtendedNew()
virtual void SetPointLocator(vtkAbstractPointLocator *)
Set / get an instance of vtkAbstractPointLocator which is used to support the FindPoint() and FindCel...
static vtkPointSet * New()
Standard instantiation method.
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
void Squeeze() override
Reclaim any unused memory.
static vtkPointSet * GetData(vtkInformationVector *v, int i=0)
Retrieve an instance of this class from an information object.
vtkIdType FindPoint(double x[3]) override
See vtkDataSet for additional information.
vtkIdType FindCell(double x[3], vtkCell *cell, vtkGenericCell *gencell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights) override
See vtkDataSet for additional information.
vtkCellIterator * NewCellIterator() override
Return an iterator that traverses the cells in this data set.
vtkAbstractPointLocator * PointLocator
Definition: vtkPointSet.h:267
void UnRegister(vtkObjectBase *o) override
Overwritten to handle the data/locator loop.
void Register(vtkObjectBase *o) override
Overwritten to handle the data/locator loop.
void BuildLocator()
Build the internal point locator .
Definition: vtkPointSet.h:175
vtkIdType FindCell(double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights) override
See vtkDataSet for additional information.
vtkAbstractCellLocator * CellLocator
Definition: vtkPointSet.h:268
void BuildCellLocator()
Build the cell locator.
void ComputeBounds() override
Compute the (X, Y, Z) bounds of the data.
vtkPoints * Points
Definition: vtkPointSet.h:266
vtkIdType GetNumberOfCells() override
This method always returns 0, as there are no cells in a vtkPointSet.
Definition: vtkPointSet.h:126
vtkIdType GetNumberOfPoints() override
See vtkDataSet for additional information.
Definition: vtkPointSet.h:280
double * GetPoint(vtkIdType ptId) override
See vtkDataSet for additional information.
Definition: vtkPointSet.h:162
vtkMTimeType GetMTime() override
Get MTime which also considers its vtkPoints MTime.
void DeepCopy(vtkDataObject *src) override
Shallow and Deep copy.
void GetPoint(vtkIdType ptId, double x[3]) override
See vtkDataSet for additional information.
Definition: vtkPointSet.h:113
void ReportReferences(vtkGarbageCollector *) override
void GetCell(vtkIdType, vtkGenericCell *cell) override
This method sets cell to be an empty cell.
Definition: vtkPointSet.h:148
int GetCellType(vtkIdType) override
This method always returns VTK_EMPTY_CELL, as there is no cell in a vtkPointSet.
Definition: vtkPointSet.h:154
static vtkPointSet * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
unsigned long GetActualMemorySize() override
Return the actual size of the data in kibibytes (1024 bytes).
int GetMaxCellSize() override
This method always returns 0, as there are no cells in a vtkPointSet.
Definition: vtkPointSet.h:127
represent and manipulate 3D points
Definition: vtkPoints.h:34
vtkIdType GetNumberOfPoints() const
Return number of points in array.
Definition: vtkPoints.h:126
@ info
Definition: vtkX3D.h:382
@ VTK_EMPTY_CELL
Definition: vtkCellType.h:46
int vtkIdType
Definition: vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287
#define VTK_SIZEHINT(...)