VTK  9.7.20261026
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
142
143#ifndef vtkDataSet_h
144#define vtkDataSet_h
145
146#include "vtkCommonDataModelModule.h" // For export macro
147#include "vtkDataObject.h"
148#include "vtkNew.h" // For vtkNew
149#include "vtkSmartPointer.h" // For vtkSmartPointer
150#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
152VTK_ABI_NAMESPACE_BEGIN
153class vtkCell;
154class vtkCellData;
155class vtkCellIterator;
156class vtkCellTypes;
157class vtkGenericCell;
158class vtkIdList;
159class vtkPointData;
160class vtkPoints;
163
164class VTKCOMMONDATAMODEL_EXPORT VTK_MARSHALAUTO vtkDataSet : public vtkDataObject
165{
166public:
167 vtkTypeMacro(vtkDataSet, vtkDataObject);
168 void PrintSelf(ostream& os, vtkIndent indent) override;
169
176 virtual void CopyStructure(vtkDataSet* ds) = 0;
177
183 virtual void CopyAttributes(vtkDataSet* ds);
184
190
196
204
209 virtual double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) = 0;
210
217 virtual void GetPoint(vtkIdType id, double x[3]);
218
224
237 virtual vtkCell* GetCell(vtkIdType cellId) = 0;
238 virtual vtkCell* GetCell(int vtkNotUsed(i), int vtkNotUsed(j), int vtkNotUsed(k))
239 {
240 vtkErrorMacro("ijk indices are only valid with structured data!");
241 return nullptr;
242 }
243
245
254 virtual void GetCell(vtkIdType cellId, vtkGenericCell* cell) = 0;
255
267 virtual void GetCellBounds(vtkIdType cellId, double bounds[6]);
268
274 virtual int GetCellType(vtkIdType cellId) = 0;
275
285
295 virtual void GetDistinctCellTypes(vtkCellTypes* types);
296
302 virtual void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) = 0;
303
316 virtual void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts,
317 vtkIdList* ptIds) VTK_SIZEHINT(pts, npts);
318
324 virtual void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) = 0;
325
333 virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds);
334
339 vtkIdType cellId, unsigned char& cellType, vtkGenericCell* tempCell);
340
342
348 virtual void GetCellFacePoints(vtkIdType cellId, int faceId, vtkIdList* facePtIds,
349 unsigned char& cellType, vtkIdList* tempCellPointIds, vtkGenericCell* tempCell);
350 virtual void GetCellFacePointsFromCellPoints(vtkIdType cellId, int faceId, vtkIdList* facePtIds,
351 unsigned char cellType, vtkIdType cellNpts, const vtkIdType* cellPts, vtkGenericCell* tempCell);
353
358 vtkIdType cellId, unsigned char& cellType, vtkGenericCell* tempCell);
359
361
367 virtual void GetCellEdgePoints(vtkIdType cellId, int edgeId, vtkIdList* edgePtIds,
368 unsigned char& cellType, vtkIdList* tempCellPointIds, vtkGenericCell* tempCell);
369 virtual void GetCellEdgePointsFromCellPoints(vtkIdType cellId, int edgeId, vtkIdList* edgePtIds,
370 unsigned char cellType, vtkIdType cellNpts, const vtkIdType* cellPts, vtkGenericCell* tempCell);
372
374
381 vtkIdType FindPoint(double x, double y, double z)
382 {
383 double xyz[3];
384 xyz[0] = x;
385 xyz[1] = y;
386 xyz[2] = z;
387 return this->FindPoint(xyz);
388 }
389 virtual vtkIdType FindPoint(double x[3]) = 0;
391
403 virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
404 double pcoords[3], double* weights);
405
413 virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkGenericCell* gencell, vtkIdType cellId,
414 double tol2, int& subId, double pcoords[3], double* weights) = 0;
415
424 virtual vtkCell* FindAndGetCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2,
425 int& subId, double pcoords[3], double* weights);
426
432
437 vtkCellData* GetCellData() { return this->CellData; }
438
444
449 virtual void Squeeze();
450
455 virtual void ComputeBounds();
456
463
470 void GetBounds(double bounds[6]);
471
477
483 void GetCenter(double center[3]);
484
490 double GetLength();
491
497 double GetLength2();
498
514 double GetSampledMaxCellLength2(vtkIdType numSamples = 100);
515
520 void Initialize() override;
521
532 virtual void GetScalarRange(double range[2]);
533
544
550 virtual int GetMaxCellSize() = 0;
551
553
563
572 unsigned long GetActualMemorySize() override;
573
577 int GetDataObjectType() VTK_FUTURE_CONST override { return VTK_DATA_SET; }
578
580
583 void ShallowCopy(vtkDataObject* src) override;
584 void DeepCopy(vtkDataObject* src) override;
586
593
603
605
610 virtual void GenerateGhostArray(int zeroExt[6]) { this->GenerateGhostArray(zeroExt, false); }
611 virtual void GenerateGhostArray(int zeroExt[6], bool cellOnly);
613
615
621
629
633 vtkIdType GetNumberOfElements(int type) override;
634
645
661 virtual bool HasAnyBlankCells() { return false; }
667 virtual bool HasAnyBlankPoints() { return false; }
668
674
679
685
696
700 bool SupportsGhostArray(int type) override;
701
702protected:
703 // Constructor with default bounds (0,1, 0,1, 0,1).
705 ~vtkDataSet() override;
706
708
714
719 virtual void ComputeScalarRange();
720
721 vtkCellData* CellData; // Scalars, vectors, etc. associated w/ each cell
722 vtkPointData* PointData; // Scalars, vectors, etc. associated w/ each point
723 vtkCallbackCommand* DataObserver; // Observes changes to cell/point data
724 vtkTimeStamp ComputeTime; // Time at which bounds, center, etc. computed
725 double Bounds[6]; // (xmin,xmax, ymin,ymax, zmin,zmax) geometric bounds
726 double Center[3];
727
728 // Cached scalar range
729 double ScalarRange[2];
730
731 // Time at which scalar range is computed
733
734private:
735 void InternalDataSetCopy(vtkDataSet* src);
736
737 // This should only be used if a vtkDataSet subclass don't define GetPoints()
739
740 vtkDataSet(const vtkDataSet&) = delete;
741 void operator=(const vtkDataSet&) = delete;
742};
743
744inline void vtkDataSet::GetPoint(vtkIdType id, double x[3])
745{
746 double* pt = this->GetPoint(id);
747 x[0] = pt[0];
748 x[1] = pt[1];
749 x[2] = pt[2];
750}
751
752VTK_ABI_NAMESPACE_END
753#endif
void GetPoint(int i, int j, int k, double pnt[3])
supports function callbacks
represent and manipulate cell attribute data
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:131
virtual vtkIdType FindCell(double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)
Locate cell based on global coordinate x and tolerance squared.
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:667
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:443
bool HasAnyGhostCells()
Returns 1 if there are any ghost cells 0 otherwise.
double Center[3]
Definition vtkDataSet.h:726
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:724
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.
virtual void GetCellEdgePointsFromCellPoints(vtkIdType cellId, int edgeId, vtkIdList *edgePtIds, unsigned char cellType, vtkIdType cellNpts, const vtkIdType *cellPts, vtkGenericCell *tempCell)
Get the point ids of the edge edgeId of the cell cellId, and the type of the cell,...
vtkTimeStamp ScalarRangeComputeTime
Definition vtkDataSet.h:732
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:577
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:589
virtual void GetCellFacePointsFromCellPoints(vtkIdType cellId, int faceId, vtkIdList *facePtIds, unsigned char cellType, vtkIdType cellNpts, const vtkIdType *cellPts, vtkGenericCell *tempCell)
Get the point ids of the face faceId of the cell cellId, and the type of the cell,...
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:661
virtual void GenerateGhostArray(int zeroExt[6])
Normally called by pipeline executives or algorithms only.
Definition vtkDataSet.h:610
virtual int GetMaxSpatialDimension()
Get the maximum/minimum spatial dimensionality of the data which is the maximum/minimum dimension of ...
vtkPointData * PointData
Definition vtkDataSet.h:722
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 GetScalarRange(double range[2])
Convenience method to get the range of the first component (and only the first component) of any scal...
virtual void GetCellEdgePoints(vtkIdType cellId, int edgeId, vtkIdList *edgePtIds, unsigned char &cellType, vtkIdList *tempCellPointIds, vtkGenericCell *tempCell)
Get the point ids of the edge edgeId of the cell cellId, and the type of the cell,...
double * GetCenter()
Get the center of the bounding box.
vtkNew< vtkGenericCell > GenericCell
Definition vtkDataSet.h:707
virtual void CopyStructure(vtkDataSet *ds)=0
Copy the geometric and topological structure of an object.
void Initialize() override
Restore data object to initial state.
double Bounds[6]
Definition vtkDataSet.h:725
virtual void GetDistinctCellTypes(vtkCellTypes *types)
Get a list of types of cells in a dataset.
double GetSampledMaxCellLength2(vtkIdType numSamples=100)
Samples max squared cell length using strided indexing.
vtkCellData * CellData
Definition vtkDataSet.h:721
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:723
virtual int GetCellNumberOfEdges(vtkIdType cellId, unsigned char &cellType, vtkGenericCell *tempCell)
Get the number of edges of a cell, and its type.
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.
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:381
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:729
~vtkDataSet() override
virtual void GetCellFacePoints(vtkIdType cellId, int faceId, vtkIdList *facePtIds, unsigned char &cellType, vtkIdList *tempCellPointIds, vtkGenericCell *tempCell)
Get the point ids of the face faceId of the cell cellId, and the type of the cell,...
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 vtkCell * GetCell(int i, int j, int k)
Definition vtkDataSet.h:238
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.
virtual int GetCellNumberOfFaces(vtkIdType cellId, unsigned char &cellType, vtkGenericCell *tempCell)
Get the number of faces of a cell, and its type.
vtkCellData * GetCellData()
Return a pointer to this dataset's cell data.
Definition vtkDataSet.h:437
virtual vtkIdType FindPoint(double x[3])=0
Locate the closest point to the global coordinate x.
Represents and manipulates a collection of data arrays.
provides thread-safe access to cells
list of point or cell ids
Definition vtkIdList.h:135
a simple class to control print indentation
Definition vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Allocate and hold a VTK object.
Definition vtkNew.h:168
represent and manipulate point attribute data
represent and manipulate 3D points
Definition vtkPoints.h:140
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:363
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:318
@ VTK_DATA_SET
Definition vtkType.h:117
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO
#define VTK_NEWINSTANCE