VTK  9.5.2
vtkDataSet.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
33
34#ifndef vtkDataSet_h
35#define vtkDataSet_h
36
37#include "vtkCommonDataModelModule.h" // For export macro
38#include "vtkDataObject.h"
39#include "vtkNew.h" // For vtkNew
40#include "vtkSmartPointer.h" // For vtkSmartPointer
41#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
42
43VTK_ABI_NAMESPACE_BEGIN
44class vtkCell;
45class vtkCellData;
46class vtkCellIterator;
47class vtkCellTypes;
48class vtkGenericCell;
49class vtkIdList;
50class vtkPointData;
51class vtkPoints;
54
55class VTKCOMMONDATAMODEL_EXPORT VTK_MARSHALAUTO vtkDataSet : public vtkDataObject
56{
57public:
58 vtkTypeMacro(vtkDataSet, vtkDataObject);
59 void PrintSelf(ostream& os, vtkIndent indent) override;
60
67 virtual void CopyStructure(vtkDataSet* ds) = 0;
68
74 virtual void CopyAttributes(vtkDataSet* ds);
75
81
87
94 virtual vtkPoints* GetPoints();
95
100 virtual double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) = 0;
101
108 virtual void GetPoint(vtkIdType id, double x[3]);
109
115
128 virtual vtkCell* GetCell(vtkIdType cellId) = 0;
129 virtual vtkCell* GetCell(int vtkNotUsed(i), int vtkNotUsed(j), int vtkNotUsed(k))
130 {
131 vtkErrorMacro("ijk indices are only valid with structured data!");
132 return nullptr;
133 }
134
136
144 virtual void GetCell(vtkIdType cellId, vtkGenericCell* cell) = 0;
145
157 virtual void GetCellBounds(vtkIdType cellId, double bounds[6]);
158
164 virtual int GetCellType(vtkIdType cellId) = 0;
165
175
185 virtual void GetCellTypes(vtkCellTypes* types);
186
192 virtual void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) = 0;
193
206 virtual void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts,
207 vtkIdList* ptIds) VTK_SIZEHINT(pts, npts);
208
214 virtual void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) = 0;
215
223 virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds);
224
233 virtual int GetCellNumberOfFaces(vtkIdType cellId, unsigned char& cellType, vtkGenericCell* cell);
234
236
243 vtkIdType FindPoint(double x, double y, double z)
244 {
245 double xyz[3];
246 xyz[0] = x;
247 xyz[1] = y;
248 xyz[2] = z;
249 return this->FindPoint(xyz);
250 }
251 virtual vtkIdType FindPoint(double x[3]) = 0;
253
265 virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
266 double pcoords[3], double* weights) = 0;
267
275 virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkGenericCell* gencell, vtkIdType cellId,
276 double tol2, int& subId, double pcoords[3], double* weights) = 0;
277
286 virtual vtkCell* FindAndGetCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2,
287 int& subId, double pcoords[3], double* weights);
288
294
299 vtkCellData* GetCellData() { return this->CellData; }
300
306
311 virtual void Squeeze();
312
317 virtual void ComputeBounds();
318
325
332 void GetBounds(double bounds[6]);
333
339
345 void GetCenter(double center[3]);
346
352 double GetLength();
353
359 double GetLength2();
360
365 void Initialize() override;
366
377 virtual void GetScalarRange(double range[2]);
378
389
395 virtual int GetMaxCellSize() = 0;
396
398
408
417 unsigned long GetActualMemorySize() override;
418
422 int GetDataObjectType() VTK_FUTURE_CONST override { return VTK_DATA_SET; }
423
425
428 void ShallowCopy(vtkDataObject* src) override;
429 void DeepCopy(vtkDataObject* src) override;
431
438
448
450
455 virtual void GenerateGhostArray(int zeroExt[6]) { this->GenerateGhostArray(zeroExt, false); }
456 virtual void GenerateGhostArray(int zeroExt[6], bool cellOnly);
458
460
466
474
478 vtkIdType GetNumberOfElements(int type) override;
479
490
506 virtual bool HasAnyBlankCells() { return false; }
512 virtual bool HasAnyBlankPoints() { return false; }
513
519
524
530
541
545 bool SupportsGhostArray(int type) override;
546
547protected:
548 // Constructor with default bounds (0,1, 0,1, 0,1).
550 ~vtkDataSet() override;
551
553
559
564 virtual void ComputeScalarRange();
565
566 vtkCellData* CellData; // Scalars, vectors, etc. associated w/ each cell
567 vtkPointData* PointData; // Scalars, vectors, etc. associated w/ each point
568 vtkCallbackCommand* DataObserver; // Observes changes to cell/point data
569 vtkTimeStamp ComputeTime; // Time at which bounds, center, etc. computed
570 double Bounds[6]; // (xmin,xmax, ymin,ymax, zmin,zmax) geometric bounds
571 double Center[3];
572
573 // Cached scalar range
574 double ScalarRange[2];
575
576 // Time at which scalar range is computed
578
579private:
580 void InternalDataSetCopy(vtkDataSet* src);
581
582 // This should only be used if a vtkDataSet subclass don't define GetPoints()
584
585 vtkDataSet(const vtkDataSet&) = delete;
586 void operator=(const vtkDataSet&) = delete;
587};
588
589inline void vtkDataSet::GetPoint(vtkIdType id, double x[3])
590{
591 double* pt = this->GetPoint(id);
592 x[0] = pt[0];
593 x[1] = pt[1];
594 x[2] = pt[2];
595}
596
597VTK_ABI_NAMESPACE_END
598#endif
void GetPoint(int i, int j, int k, double pnt[3])
supports function callbacks
represent and manipulate cell attribute data
Definition vtkCellData.h:32
Efficient cell iterator for vtkDataSet topologies.
object provides direct access to cells in vtkCellArray and type information
abstract class to specify cell behavior
Definition vtkCell.h:51
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
virtual bool HasAnyBlankPoints()
Returns 1 if there are any blanking points 0 otherwise.
Definition vtkDataSet.h:512
static vtkDataSet * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
double * GetBounds()
Return a pointer to the geometry bounding box in the form (xmin,xmax, ymin,ymax, zmin,...
vtkMTimeType GetMTime() override
Datasets are composite objects and need to check each part for MTime THIS METHOD IS THREAD SAFE.
vtkIdType GetNumberOfElements(int type) override
Get the number of elements for a specific attribute type (POINT, CELL, etc.).
virtual vtkIdType GetCellSize(vtkIdType cellId)
Get the size of cell with cellId such that: 0 <= cellId < NumberOfCells.
vtkPointData * GetPointData()
Return a pointer to this dataset's point data.
Definition vtkDataSet.h:305
bool HasAnyGhostCells()
Returns 1 if there are any ghost cells 0 otherwise.
double Center[3]
Definition vtkDataSet.h:571
virtual vtkIdType FindCell(double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)=0
Locate cell based on global coordinate x and tolerance squared.
vtkUnsignedCharArray * AllocateCellGhostArray()
Allocate ghost array for cells.
bool HasAnyGhostPoints()
Returns 1 if there are any ghost points 0 otherwise.
virtual void ComputeBounds()
Compute the data bounding box from data points.
vtkUnsignedCharArray * GetGhostArray(int type) override
Returns the ghost array for the given type (point or cell).
vtkTimeStamp ComputeTime
Definition vtkDataSet.h:569
virtual void CopyAttributes(vtkDataSet *ds)
Copy the attributes associated with the specified dataset to this instance of vtkDataSet.
virtual void GetPointCells(vtkIdType ptId, vtkIdList *cellIds)=0
Topological inquiry to get cells using point.
vtkTimeStamp ScalarRangeComputeTime
Definition vtkDataSet.h:577
static vtkDataSet * GetData(vtkInformationVector *v, int i=0)
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 GetDataObjectType() VTK_FUTURE_CONST override
Return the type of data object.
Definition vtkDataSet.h:422
virtual vtkMTimeType GetMeshMTime()
Abstract method which return the mesh (geometry/topology) modification time.
virtual void GetCellBounds(vtkIdType cellId, double bounds[6])
Get the bounds of the cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual vtkPoints * GetPoints()
If the subclass has (implicit/explicit) points, then return them.
double GetLength()
Return the length of the diagonal of the bounding box.
virtual vtkIdType FindCell(double x[3], vtkCell *cell, vtkGenericCell *gencell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)=0
This is a version of the above method that can be used with multithreaded applications.
double GetLength2()
Return the squared length of the diagonal of the bounding box.
virtual vtkIdType GetNumberOfPoints()=0
Determine the number of points composing the dataset.
@ DATA_OBJECT_FIELD
Definition vtkDataSet.h:434
virtual void GetCell(vtkIdType cellId, vtkGenericCell *cell)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual vtkIdType GetNumberOfCells()=0
Determine the number of cells composing the dataset.
vtkFieldData * GetAttributesAsFieldData(int type) override
Returns the attributes of the data object as a vtkFieldData.
virtual bool HasAnyBlankCells()
Returns 1 if there are any blanking cells 0 otherwise.
Definition vtkDataSet.h:506
virtual void GenerateGhostArray(int zeroExt[6])
Normally called by pipeline executives or algorithms only.
Definition vtkDataSet.h:455
virtual int GetMaxSpatialDimension()
Get the maximum/minimum spatial dimensionality of the data which is the maximum/minimum dimension of ...
vtkPointData * PointData
Definition vtkDataSet.h:567
virtual void ComputeScalarRange()
Compute the range of the scalars and cache it into ScalarRange only if the cache became invalid (Scal...
virtual double * GetPoint(vtkIdType ptId)=0
Get point coordinates with ptId such that: 0 <= ptId < NumberOfPoints.
vtkMTimeType GetGhostCellsTime()
Return the MTime of the ghost cells array.
virtual void GetCellTypes(vtkCellTypes *types)
Get a list of types of cells in a dataset.
virtual void GetScalarRange(double range[2])
Convenience method to get the range of the first component (and only the first component) of any scal...
double * GetCenter()
Get the center of the bounding box.
vtkNew< vtkGenericCell > GenericCell
Definition vtkDataSet.h:552
virtual void CopyStructure(vtkDataSet *ds)=0
Copy the geometric and topological structure of an object.
virtual vtkCell * GetCell(int vtkNotUsed(i), int vtkNotUsed(j), int vtkNotUsed(k))
Definition vtkDataSet.h:129
void Initialize() override
Restore data object to initial state.
double Bounds[6]
Definition vtkDataSet.h:570
vtkCellData * CellData
Definition vtkDataSet.h:566
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual int GetCellType(vtkIdType cellId)=0
Get type of cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual int GetMinSpatialDimension()
Get the maximum/minimum spatial dimensionality of the data which is the maximum/minimum dimension of ...
virtual void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds)=0
Topological inquiry to get points defining cell.
vtkCallbackCommand * DataObserver
Definition vtkDataSet.h:568
virtual void GetCellPoints(vtkIdType cellId, vtkIdType &npts, vtkIdType const *&pts, vtkIdList *ptIds)
Topological inquiry to get points defining cell.
void DeepCopy(vtkDataObject *src) override
Shallow and Deep copy.
vtkUnsignedCharArray * GetCellGhostArray()
Get the array that defines the ghost type of each cell.
virtual int GetCellNumberOfFaces(vtkIdType cellId, unsigned char &cellType, vtkGenericCell *cell)
Get the number of faces of a cell.
vtkUnsignedCharArray * AllocatePointGhostArray()
Allocate ghost array for points.
void SetCellOrderAndRationalWeights(vtkIdType cellId, vtkGenericCell *cell)
vtkIdType FindPoint(double x, double y, double z)
Locate the closest point to the global coordinate x.
Definition vtkDataSet.h:243
virtual vtkCell * FindAndGetCell(double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)
Locate the cell that contains a point and return the cell.
virtual void Squeeze()
Reclaim any extra memory used to store data.
double ScalarRange[2]
Definition vtkDataSet.h:574
~vtkDataSet() override
virtual int GetMaxCellSize()=0
Convenience method returns largest cell size in dataset.
virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds)
Topological inquiry to get all cells using list of points exclusive of cell specified (e....
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkUnsignedCharArray * GetPointGhostArray()
Gets the array that defines the ghost type of each point.
virtual void GenerateGhostArray(int zeroExt[6], bool cellOnly)
Normally called by pipeline executives or algorithms only.
virtual vtkCellIterator * NewCellIterator()
Return an iterator that traverses the cells in this data set.
int CheckAttributes()
This method checks to see if the cell and point attributes match the geometry.
bool SupportsGhostArray(int type) override
Returns true for POINT or CELL, false otherwise.
vtkCellData * GetCellData()
Return a pointer to this dataset's cell data.
Definition vtkDataSet.h:299
virtual vtkIdType FindPoint(double x[3])=0
Locate the closest point to the global coordinate x.
represent and manipulate fields of data
provides thread-safe access to cells
list of point or cell ids
Definition vtkIdList.h:24
a simple class to control print indentation
Definition vtkIndent.h:29
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Allocate and hold a VTK object.
Definition vtkNew.h:58
represent and manipulate point attribute data
represent and manipulate 3D points
Definition vtkPoints.h:30
Hold a reference to a vtkObjectBase instance.
record modification and/or execution time
dynamic, self-adjusting array of unsigned char
int vtkIdType
Definition vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:287
@ VTK_DATA_SET
Definition vtkType.h:84
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO
#define VTK_NEWINSTANCE