VTK  9.5.20251114
vtkCartesianGrid.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
17#ifndef vtkCartesianGrid_h
18#define vtkCartesianGrid_h
19
20#include "vtkCommonDataModelModule.h" // For export macro
21#include "vtkDataSet.h"
22#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_6_0()
23#include "vtkStructuredData.h" // For inline methods
24
25VTK_ABI_NAMESPACE_BEGIN
27class VTKCOMMONDATAMODEL_EXPORT VTK_MARSHALAUTO vtkCartesianGrid : public vtkDataSet
28{
29public:
31
35 void PrintSelf(ostream& os, vtkIndent indent) override;
36 void ShallowCopy(vtkDataObject* src) override;
37 void DeepCopy(vtkDataObject* src) override;
38 void CopyStructure(vtkDataSet* ds) override;
40
44 int GetDataObjectType() VTK_FUTURE_CONST override { return VTK_CARTESIAN_GRID; }
45
46 using Superclass::FindCell;
47 using Superclass::GetCell;
48 using Superclass::GetPoint;
49
51
54 vtkPoints* GetPoints() override;
55 void GetPoint(vtkIdType id, double x[3]) override;
56 double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) override;
57 vtkIdType GetNumberOfCells() override;
59 int GetMaxSpatialDimension() override;
60 int GetMinSpatialDimension() override;
61 int GetCellType(vtkIdType cellId) override;
63 void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts, vtkIdList* ptIds)
64 VTK_SIZEHINT(pts, npts) override;
65 void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
66 vtkIdType FindCell(double x[3], vtkCell* cell, vtkGenericCell* gencell, vtkIdType cellId,
67 double tol2, int& subId, double pcoords[3], double* weights) override;
68 vtkCell* FindAndGetCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
69 double pcoords[3], double* weights) override;
70 void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override
71 {
72 vtkStructuredData::GetPointCells(ptId, cellIds, this->GetDimensions());
73 }
74 int GetMaxCellSize() override { return 8; } // voxel is the largest
75 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
76 vtkCell* GetCell(vtkIdType cellId) override;
77 vtkCell* GetCell(int i, int j, int k) override;
78 bool HasAnyBlankPoints() override;
79 bool HasAnyBlankCells() override;
80 void Initialize() override;
82
89 virtual int ComputeStructuredCoordinates(const double x[3], int ijk[3], double pcoords[3]) = 0;
90
94 virtual vtkIdType ComputePointId(int ijk[3]) = 0;
95
99 virtual vtkIdType ComputeCellId(int ijk[3]) = 0;
100
108 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds, int* seedLoc);
109
113 int GetDataDimension();
114
121
123
129 using vtkDataSet::GetCellTypes; // VTK_DEPRECATED_IN_9_6_0
131 VTK_DEPRECATED_IN_9_6_0("Use vtkConstantArray<unsigned char>* GetCellTypes() instead")
132 vtkConstantArray<int>* GetCellTypesArray();
134
141 void GetCellDims(int cellDims[3]);
142
144
150 virtual void BlankPoint(vtkIdType ptId);
151 virtual void UnBlankPoint(vtkIdType ptId);
152 virtual void BlankPoint(int i, int j, int k);
153 virtual void UnBlankPoint(int i, int j, int k);
155
157
163 virtual void BlankCell(vtkIdType ptId);
164 virtual void UnBlankCell(vtkIdType ptId);
165 virtual void BlankCell(int i, int j, int k);
166 virtual void UnBlankCell(int i, int j, int k);
168
174 unsigned char IsPointVisible(vtkIdType ptId);
175
181 unsigned char IsCellVisible(vtkIdType cellId);
182
186 vtkGetMacro(DataDescription, int);
187
189
193 void SetDimensions(int i, int j, int k) { this->SetExtent(0, i - 1, 0, j - 1, 0, k - 1); };
194 void SetDimensions(const int dim[3])
195 {
196 this->SetExtent(0, dim[0] - 1, 0, dim[1] - 1, 0, dim[2] - 1);
197 };
199
207
214 void GetDimensions(int dims[3]);
215#if VTK_ID_TYPE_IMPL != VTK_INT
216 void GetDimensions(vtkIdType dims[3]);
217#endif
218
222 int GetExtentType() VTK_FUTURE_CONST override { return VTK_3D_EXTENT; }
223
225
236 void SetExtent(int extent[6]);
237 void SetExtent(int xMin, int xMax, int yMin, int yMax, int zMin, int zMax);
238 vtkGetVector6Macro(Extent, int);
240
242
246 static void SetScalarType(int, vtkInformation* meta_data);
247 static int GetScalarType(vtkInformation* meta_data);
248 static bool HasScalarType(vtkInformation* meta_data);
250 const char* GetScalarTypeAsString() { return vtkImageScalarTypeNameMacro(this->GetScalarType()); }
252
254
259 static void SetNumberOfScalarComponents(int n, vtkInformation* meta_data);
264
265protected:
267 ~vtkCartesianGrid() override = default;
268
273
277 virtual void BuildPoints() = 0;
278
279private:
280 // Build internals fields
281 void BuildImplicitStructures();
282 void BuildCells();
283 void BuildCellTypes();
284
285 // API members
286 int DataDescription = vtkStructuredData::VTK_STRUCTURED_EMPTY;
287 int Dimensions[3] = { 0, 0, 0 };
288 int Extent[6] = { 0, -1, 0, -1, 0, -1 };
289
290 // For the GetPoint method
291 double Point[3] = { 0, 0, 0 };
292
293 // Internals fields
294 vtkSmartPointer<vtkPoints> StructuredPoints;
297 vtkSmartPointer<vtkConstantArray<int>> LegacyStructuredCellTypes; // VTK_DEPRECATED_IN_9_6_0
298};
299
300//----------------------------------------------------------------------------
302{
303 this->GetPoint(id, this->Point);
304 return this->Point;
305}
306
307//----------------------------------------------------------------------------
309{
310 return vtkStructuredData::GetNumberOfPoints(this->Extent);
311}
312
313//----------------------------------------------------------------------------
315{
316 return vtkStructuredData::GetNumberOfCells(this->Extent);
317}
318
319//----------------------------------------------------------------------------
321{
322 return vtkStructuredData::GetDataDimension(this->DataDescription);
323}
324
325//----------------------------------------------------------------------------
327{
328 return vtkStructuredData::GetDataDimension(this->DataDescription);
329}
330
331//----------------------------------------------------------------------------
333{
334 return vtkStructuredData::GetDataDimension(this->DataDescription);
335}
336
337VTK_ABI_NAMESPACE_END
338#endif
Abstract API for vtkImageData and vtkRectilinearGrid.
int GetDataObjectType() VTK_FUTURE_CONST override
Return what type of dataset this is.
static bool HasNumberOfScalarComponents(vtkInformation *meta_data)
Set/Get the number of scalar components for points.
void DeepCopy(vtkDataObject *src) override
Standard vtkObject API methods.
void CopyStructure(vtkDataSet *ds) override
Standard vtkObject API methods.
~vtkCartesianGrid() override=default
int GetDataDimension()
Return the dimensionality of the data.
bool HasAnyBlankCells() override
Standard vtkDataSet API methods.
vtkPoints * GetPoints() override
Standard vtkDataSet API methods.
static void SetNumberOfScalarComponents(int n, vtkInformation *meta_data)
Set/Get the number of scalar components for points.
void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds, int *seedLoc)
Get cell neighbors around cell located at seedloc, except cell of id cellId.
vtkIdType FindCell(double x[3], vtkCell *cell, vtkGenericCell *gencell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights) override
Standard vtkDataSet API methods.
vtkIdType GetNumberOfCells() override
Standard vtkDataSet API methods.
void GetPoint(vtkIdType id, double x[3]) override
Standard vtkDataSet API methods.
void SetExtent(int xMin, int xMax, int yMin, int yMax, int zMin, int zMax)
Set/Get the extent.
int * GetDimensions()
Get dimensions of this structured points dataset.
virtual int ComputeStructuredCoordinates(const double x[3], int ijk[3], double pcoords[3])=0
Computes the structured coordinates for a point x[3].
void Initialize() override
Standard vtkDataSet API methods.
static void SetScalarType(int, vtkInformation *meta_data)
Set/Get the scalar data type for the points.
int GetScalarType()
Set/Get the scalar data type for the points.
vtkCell * FindAndGetCell(double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights) override
Standard vtkDataSet API methods.
void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) override
Standard vtkDataSet API methods.
vtkStructuredCellArray * GetCells()
Return the image data connectivity array.
void SetExtent(int extent[6])
Set/Get the extent.
static bool HasScalarType(vtkInformation *meta_data)
Set/Get the scalar data type for the points.
void SetDimensions(const int dim[3])
Set dimensions of rectilinear grid dataset.
void GetCellPoints(vtkIdType cellId, vtkIdType &npts, vtkIdType const *&pts, vtkIdList *ptIds) override
Standard vtkDataSet API methods.
vtkIdType GetNumberOfPoints() override
Standard vtkDataSet API methods.
virtual void BuildPoints()=0
Pure abstract method responsible to build and set internal points.
int GetMaxSpatialDimension() override
Standard vtkDataSet API methods.
int GetMaxCellSize() override
Standard vtkDataSet API methods.
vtkIdType GetCellSize(vtkIdType cellId) override
Standard vtkDataSet API methods.
bool HasAnyBlankPoints() override
Standard vtkDataSet API methods.
virtual vtkIdType ComputeCellId(int ijk[3])=0
Given a location in structured coordinates (i-j-k), return the cell id.
void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) override
Standard vtkDataSet API methods.
int GetMinSpatialDimension() override
Standard vtkDataSet API methods.
vtkConstantArray< unsigned char > * GetCellTypes()
Get the array of all cell types in the image data.
void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds) override
Standard vtkDataSet API methods.
int GetCellType(vtkIdType cellId) override
Standard vtkDataSet API methods.
static int GetNumberOfScalarComponents(vtkInformation *meta_data)
Set/Get the number of scalar components for points.
const char * GetScalarTypeAsString()
Set/Get the scalar data type for the points.
virtual vtkIdType ComputePointId(int ijk[3])=0
Given a location in structured coordinates (i-j-k), return the point id.
void SetStructuredPoints(vtkPoints *)
Set the internally built structured points.
vtkCell * GetCell(int i, int j, int k) override
Standard vtkDataSet API methods.
int GetNumberOfScalarComponents()
Set/Get the number of scalar components for points.
static int GetScalarType(vtkInformation *meta_data)
Set/Get the scalar data type for the points.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard vtkObject API methods.
vtkCell * GetCell(vtkIdType cellId) override
Standard vtkDataSet API methods.
int GetExtentType() VTK_FUTURE_CONST override
Structured extent.
void ShallowCopy(vtkDataObject *src) override
Standard vtkObject API methods.
abstract class to specify cell behavior
Definition vtkCell.h:129
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:166
virtual vtkIdType GetNumberOfPoints()=0
Determine the number of points composing the dataset.
virtual vtkIdType GetNumberOfCells()=0
Determine the number of cells composing the dataset.
virtual int GetMaxSpatialDimension()
Get the maximum/minimum spatial dimensionality of the data which is the maximum/minimum dimension of ...
virtual double * GetPoint(vtkIdType ptId)=0
Get point coordinates with ptId such that: 0 <= ptId < NumberOfPoints.
virtual void GetCellTypes(vtkCellTypes *types)
Get a list of types of cells in a dataset.
Definition vtkDataSet.h:298
virtual int GetMinSpatialDimension()
Get the maximum/minimum spatial dimensionality of the data which is the maximum/minimum dimension of ...
provides thread-safe access to cells
list of point or cell ids
Definition vtkIdList.h:133
A read only array class that wraps an implicit function from integers to any value type supported by ...
a simple class to control print indentation
Definition vtkIndent.h:108
Store vtkAlgorithm input/output information.
represent and manipulate 3D points
Definition vtkPoints.h:139
Hold a reference to a vtkObjectBase instance.
implicit object to represent cell connectivity
static vtkIdType GetNumberOfCells(const int ext[6], int dataDescription=vtkStructuredData::VTK_STRUCTURED_EMPTY)
Given the grid extent, this method returns the total number of cells within the extent.
static int GetDataDimension(int dataDescription)
Return the topological dimension of the data (e.g., 0, 1, 2, or 3D).
static vtkIdType GetNumberOfPoints(const int ext[6], int dataDescription=vtkStructuredData::VTK_STRUCTURED_EMPTY)
Given the grid extent, this method returns the total number of points within the extent.
static void GetPointCells(vtkIdType ptId, vtkIdList *cellIds, VTK_FUTURE_CONST int dim[3])
Get the cells using a point.
#define VTK_3D_EXTENT
#define VTK_DEPRECATED_IN_9_6_0(reason)
int vtkIdType
Definition vtkType.h:367
@ VTK_CARTESIAN_GRID
Definition vtkType.h:165
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO