VTK  9.7.1
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 "vtkConstantArray.h" // For vtkConstantArray
22 #include "vtkDataSet.h"
23 #include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_6_0()
24 #include "vtkStructuredData.h" // For inline methods
25 
26 VTK_ABI_NAMESPACE_BEGIN
28 class VTKCOMMONDATAMODEL_EXPORT VTK_MARSHALAUTO vtkCartesianGrid : public vtkDataSet
29 {
30 public:
32 
35  vtkTypeMacro(vtkCartesianGrid, vtkDataSet);
36  void PrintSelf(ostream& os, vtkIndent indent) override;
37  void ShallowCopy(vtkDataObject* src) override;
38  void DeepCopy(vtkDataObject* src) override;
39  void CopyStructure(vtkDataSet* ds) override;
41 
45  int GetDataObjectType() VTK_FUTURE_CONST override { return VTK_CARTESIAN_GRID; }
46 
47  using Superclass::FindCell;
48  using Superclass::GetCell;
50 
52 
55  vtkPoints* GetPoints() override;
56  void GetPoint(vtkIdType id, double x[3]) override;
57  double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) override;
58  vtkIdType GetNumberOfCells() override;
59  vtkIdType GetNumberOfPoints() override;
60  int GetMaxSpatialDimension() override;
61  int GetMinSpatialDimension() override;
62  int GetCellType(vtkIdType cellId) override;
63  vtkIdType GetCellSize(vtkIdType cellId) override;
64  void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts, vtkIdList* ptIds)
65  VTK_SIZEHINT(pts, npts) override;
66  void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
67  vtkIdType FindCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
68  double pcoords[3], double* weights) override;
69  void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override
70  {
71  vtkStructuredData::GetPointCells(ptId, cellIds, this->GetDimensions());
72  }
73  int GetMaxCellSize() override { return 8; } // voxel is the largest
74  void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
75  vtkCell* GetCell(vtkIdType cellId) override;
76  vtkCell* GetCell(int i, int j, int k) override;
77  bool HasAnyBlankPoints() override;
78  bool HasAnyBlankCells() override;
79  void Initialize() override;
81 
88  virtual int ComputeStructuredCoordinates(const double x[3], int ijk[3], double pcoords[3]) = 0;
89 
93  virtual vtkIdType ComputePointId(int ijk[3]) = 0;
94 
98  virtual vtkIdType ComputeCellId(int ijk[3]) = 0;
99 
107  void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds, int* seedLoc);
108 
112  int GetDataDimension();
113 
119  vtkStructuredCellArray* GetCells();
120 
122 
128  using vtkDataSet::GetCellTypes; // VTK_DEPRECATED_IN_9_6_0
130  VTK_DEPRECATED_IN_9_6_0("Use vtkConstantArray<unsigned char>* GetCellTypes() instead")
131  vtkConstantArray<int>* GetCellTypesArray();
133 
140  void GetCellDims(int cellDims[3]);
141 
143 
149  virtual void BlankPoint(vtkIdType ptId);
150  virtual void UnBlankPoint(vtkIdType ptId);
151  virtual void BlankPoint(int i, int j, int k);
152  virtual void UnBlankPoint(int i, int j, int k);
154 
156 
162  virtual void BlankCell(vtkIdType ptId);
163  virtual void UnBlankCell(vtkIdType ptId);
164  virtual void BlankCell(int i, int j, int k);
165  virtual void UnBlankCell(int i, int j, int k);
167 
173  unsigned char IsPointVisible(vtkIdType ptId);
174 
180  unsigned char IsCellVisible(vtkIdType cellId);
181 
185  vtkGetMacro(DataDescription, int);
186 
188 
192  void SetDimensions(int i, int j, int k) { this->SetExtent(0, i - 1, 0, j - 1, 0, k - 1); };
193  void SetDimensions(const int dim[3])
194  {
195  this->SetExtent(0, dim[0] - 1, 0, dim[1] - 1, 0, dim[2] - 1);
196  };
198 
205  int* GetDimensions() VTK_SIZEHINT(3);
206 
213  void GetDimensions(int dims[3]);
214 #if VTK_ID_TYPE_IMPL != VTK_INT
215  void GetDimensions(vtkIdType dims[3]);
216 #endif
217 
221  int GetExtentType() VTK_FUTURE_CONST override { return VTK_3D_EXTENT; }
222 
224 
235  void SetExtent(VTK_FUTURE_CONST int extent[6]);
236  void SetExtent(int xMin, int xMax, int yMin, int yMax, int zMin, int zMax);
237  vtkGetVector6Macro(Extent, int);
239 
241 
245  static void SetScalarType(int, vtkInformation* meta_data);
246  static int GetScalarType(vtkInformation* meta_data);
247  static bool HasScalarType(vtkInformation* meta_data);
248  int GetScalarType();
249  const char* GetScalarTypeAsString() { return vtkImageScalarTypeNameMacro(this->GetScalarType()); }
251 
253 
258  static void SetNumberOfScalarComponents(int n, vtkInformation* meta_data);
259  static int GetNumberOfScalarComponents(vtkInformation* meta_data);
260  static bool HasNumberOfScalarComponents(vtkInformation* meta_data);
261  int GetNumberOfScalarComponents();
263 
265 
269  vtkIdType GetTupleIndexForExtent(vtkDataArray* array, VTK_FUTURE_CONST int extent[6]);
270  vtkIdType GetTupleIndex(vtkDataArray* array, VTK_FUTURE_CONST int coordinates[3]);
271  vtkIdType GetTupleIndex(vtkDataArray* array, int x, int y, int z);
273 
275 
279  vtkIdType GetValueIndexForExtent(vtkDataArray* array, VTK_FUTURE_CONST int extent[6]);
280  vtkIdType GetValueIndex(vtkDataArray* array, VTK_FUTURE_CONST int coordinates[3]);
281  vtkIdType GetValueIndex(vtkDataArray* array, int x, int y, int z);
283 
285 
289  static vtkCartesianGrid* GetData(vtkInformationVector* v, int i = 0);
291 
292 protected:
294  ~vtkCartesianGrid() override = default;
295 
299  void SetStructuredPoints(vtkPoints*);
300 
304  virtual void BuildPoints() = 0;
305 
306 private:
307  // Build internals fields
308  void BuildImplicitStructures();
309  void BuildCells();
310  void BuildCellTypes();
311 
312  // API members
313  int DataDescription = vtkStructuredData::VTK_STRUCTURED_EMPTY;
314  int Dimensions[3] = { 0, 0, 0 };
315  int Extent[6] = { 0, -1, 0, -1, 0, -1 };
316 
317  // For the GetPoint method
318  double Point[3] = { 0, 0, 0 };
319 
320  // Internals fields
321  vtkSmartPointer<vtkPoints> StructuredPoints;
324  vtkSmartPointer<vtkConstantArray<int>> LegacyStructuredCellTypes; // VTK_DEPRECATED_IN_9_6_0
325 };
326 
327 //----------------------------------------------------------------------------
329 {
330  this->GetPoint(id, this->Point);
331  return this->Point;
332 }
333 
334 //----------------------------------------------------------------------------
336 {
337  return vtkStructuredData::GetNumberOfPoints(this->Extent);
338 }
339 
340 //----------------------------------------------------------------------------
342 {
343  return vtkStructuredData::GetNumberOfCells(this->Extent);
344 }
345 
346 //----------------------------------------------------------------------------
348 {
349  return vtkStructuredData::GetDataDimension(this->DataDescription);
350 }
351 
352 //----------------------------------------------------------------------------
354 {
355  return vtkStructuredData::GetDataDimension(this->DataDescription);
356 }
357 
358 //----------------------------------------------------------------------------
360 {
361  return vtkStructuredData::GetDataDimension(this->DataDescription);
362 }
363 
364 VTK_ABI_NAMESPACE_END
365 #endif
int GetDataDimension()
Return the dimensionality of the data.
virtual vtkIdType GetNumberOfCells()=0
Determine the number of cells composing the dataset.
VTKIOHDF_EXPORT std::vector< hsize_t > GetDimensions(hid_t fileID, const char *datasetName)
Returns the dimensions of a HDF dataset of a file.
virtual vtkPoints * GetPoints()
If the subclass has (implicit/explicit) points, then return them.
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.
Store vtkAlgorithm input/output information.
vtkIdType GetNumberOfPoints() override
Standard vtkDataSet API methods.
virtual vtkIdType GetNumberOfPoints()=0
Determine the number of points composing the dataset.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) override
Standard vtkDataSet API methods.
virtual vtkIdType GetCellSize(vtkIdType cellId)
Get the size of cell with cellId such that: 0 <= cellId < NumberOfCells.
A utility array for wrapping constant functions in implicit arrays.
#define VTK_3D_EXTENT
Definition: vtkDataObject.h:52
static int GetDataDimension(int dataDescription)
Return the topological dimension of the data (e.g., 0, 1, 2, or 3D).
implicit object to represent cell connectivity
virtual int GetMaxSpatialDimension()
Get the maximum/minimum spatial dimensionality of the data which is the maximum/minimum dimension of ...
int vtkIdType
Definition: vtkType.h:363
virtual bool HasAnyBlankCells()
Returns 1 if there are any blanking cells 0 otherwise.
Definition: vtkDataSet.h:528
static vtkDataSet * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
int GetMinSpatialDimension() override
Standard vtkDataSet API methods.
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.
abstract class to specify cell behavior
Definition: vtkCell.h:50
#define VTK_DEPRECATED_IN_9_6_0(reason)
const char * GetScalarTypeAsString()
Set/Get the scalar data type for the points.
void SetDimensions(const int dim[3])
Set dimensions of rectilinear grid dataset.
a simple class to control print indentation
Definition: vtkIndent.h:28
virtual bool HasAnyBlankPoints()
Returns 1 if there are any blanking points 0 otherwise.
Definition: vtkDataSet.h:534
list of point or cell ids
Definition: vtkIdList.h:25
void GetPoint(vtkIdType id, double x[3]) override
Standard vtkDataSet API methods.
virtual void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds)=0
Topological inquiry to get points defining cell.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
virtual void GetCellTypes(vtkCellTypes *types)
Get a list of types of cells in a dataset.
Definition: vtkDataSet.h:189
void DeepCopy(vtkDataObject *src) override
Shallow and Deep copy.
virtual int GetMinSpatialDimension()
Get the maximum/minimum spatial dimensionality of the data which is the maximum/minimum dimension of ...
virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds)
Topological inquiry to get all cells using list of points exclusive of cell specified (e...
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.
#define VTK_SIZEHINT(...)
void Initialize() override
Restore data object to initial state.
int GetMaxCellSize() override
Standard vtkDataSet API methods.
void GetPoint(int i, int j, int k, double pnt[3])
int GetMaxSpatialDimension() override
Standard vtkDataSet API methods.
static void GetPointCells(vtkIdType ptId, vtkIdList *cellIds, VTK_FUTURE_CONST int dim[3])
Get the cells using a point.
virtual void CopyStructure(vtkDataSet *ds)=0
Copy the geometric and topological structure of an object.
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
Store zero or more vtkInformation instances.
virtual double * GetPoint(vtkIdType ptId)=0
Get point coordinates with ptId such that: 0 <= ptId < NumberOfPoints.
int GetDataObjectType() VTK_FUTURE_CONST override
Return what type of dataset this is.
#define VTK_MARSHALAUTO
Abstract API for vtkImageData and vtkRectilinearGrid.
vtkIdType GetNumberOfCells() override
Standard vtkDataSet API methods.
general representation of visualization data
Definition: vtkDataObject.h:55
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
represent and manipulate 3D points
Definition: vtkPoints.h:30
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual int GetCellType(vtkIdType cellId)=0
Get type of cell with cellId such that: 0 <= cellId < NumberOfCells.
int GetExtentType() VTK_FUTURE_CONST override
Structured extent.