VTK  9.1.0
vtkStructuredGrid.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkStructuredGrid.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=========================================================================*/
42#ifndef vtkStructuredGrid_h
43#define vtkStructuredGrid_h
44
45#include "vtkCommonDataModelModule.h" // For export macro
46#include "vtkPointSet.h"
47
48#include "vtkStructuredData.h" // Needed for inline methods
49
50class vtkEmptyCell;
51class vtkHexahedron;
52class vtkLine;
53class vtkQuad;
55class vtkVertex;
56
57class VTKCOMMONDATAMODEL_EXPORT vtkStructuredGrid : public vtkPointSet
58{
59public:
62
64 void PrintSelf(ostream& os, vtkIndent indent) override;
65
69 int GetDataObjectType() override { return VTK_STRUCTURED_GRID; }
70
74 void CopyStructure(vtkDataSet* ds) override;
75
77
81 double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) override
82 {
83 return this->vtkPointSet::GetPoint(ptId);
84 }
85 void GetPoint(vtkIdType ptId, double p[3]) override { this->vtkPointSet::GetPoint(ptId, p); }
86 vtkCell* GetCell(vtkIdType cellId) override;
87 vtkCell* GetCell(int i, int j, int k) override;
88 void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
89 void GetCellBounds(vtkIdType cellId, double bounds[6]) override;
90 int GetCellType(vtkIdType cellId) override;
91 vtkIdType GetNumberOfCells() override;
92 void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
93 void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override
94 {
95 vtkStructuredData::GetPointCells(ptId, cellIds, this->GetDimensions());
96 }
97 void Initialize() override;
98 int GetMaxCellSize() override { return 8; } // hexahedron is the largest
99 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
100 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds, int* seedLoc);
102
104
107 void SetDimensions(int i, int j, int k);
108 void SetDimensions(const int dim[3]);
110
112
115 virtual int* GetDimensions() VTK_SIZEHINT(3);
116 virtual void GetDimensions(int dim[3]);
118
122 int GetDataDimension();
123
125
130 void SetExtent(int extent[6]);
131 void SetExtent(int xMin, int xMax, int yMin, int yMax, int zMin, int zMax);
132 vtkGetVector6Macro(Extent, int);
134
143 unsigned long GetActualMemorySize() override;
144
146
149 void ShallowCopy(vtkDataObject* src) override;
150 void DeepCopy(vtkDataObject* src) override;
152
156 int GetExtentType() override { return VTK_3D_EXTENT; }
157
159
168
170
179
185 unsigned char IsPointVisible(vtkIdType ptId);
186
192 unsigned char IsCellVisible(vtkIdType cellId);
193
198 bool HasAnyBlankPoints() override;
203 bool HasAnyBlankCells() override;
204
211 void GetCellDims(int cellDims[3]);
212
218 void Crop(const int* updateExtent) override;
219
221
227
237 void GetPoint(int i, int j, int k, double p[3], bool adjustForExtent = true);
238
239protected:
242
243 // for the GetCell method
249
250 int Dimensions[3];
252
253 int Extent[6];
254
259 void ComputeScalarRange() override;
260
261private:
265 void GetCellNeighbors(vtkIdType cellId, vtkIdList& ptIds, vtkIdList& cellIds)
266 {
267 this->GetCellNeighbors(cellId, &ptIds, &cellIds);
268 }
269
270 // Internal method used by DeepCopy and ShallowCopy.
271 void InternalStructuredGridCopy(vtkStructuredGrid* src);
272
273private:
274 vtkStructuredGrid(const vtkStructuredGrid&) = delete;
275 void operator=(const vtkStructuredGrid&) = delete;
276};
277
279{
280 vtkIdType nCells = 1;
281 int dims[3];
282 int i;
283
284 this->GetDimensions(dims);
285 for (i = 0; i < 3; i++)
286 {
287 if (dims[i] <= 0)
288 {
289 return 0;
290 }
291 if (dims[i] > 1)
292 {
293 nCells *= (dims[i] - 1);
294 }
295 }
296
297 return nCells;
298}
299
301{
303}
304
305#endif
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 void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds)
Topological inquiry to get all cells using list of points exclusive of cell specified (e....
an empty cell used as a place-holder during processing
Definition: vtkEmptyCell.h:30
provides thread-safe access to cells
a cell that represents a linear 3D hexahedron
Definition: vtkHexahedron.h:42
list of point or cell ids
Definition: vtkIdList.h:31
a simple class to control print indentation
Definition: vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
cell represents a 1D line
Definition: vtkLine.h:31
concrete class for storing a set of points
Definition: vtkPointSet.h:67
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
void GetPoint(vtkIdType ptId, double x[3]) override
See vtkDataSet for additional information.
Definition: vtkPointSet.h:113
a cell that represents a 2D quadrilateral
Definition: vtkQuad.h:36
static int GetDataDimension(int dataDescription)
Return the topological dimension of the data (e.g., 0, 1, 2, or 3D).
static void GetPointCells(vtkIdType ptId, vtkIdList *cellIds, int dim[3])
Get the cells using a point.
topologically regular array of data
vtkHexahedron * Hexahedron
static vtkStructuredGrid * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
void SetDimensions(int i, int j, int k)
following methods are specific to structured grid
void GetCellDims(int cellDims[3])
Given the node dimensions of this grid instance, this method computes the node dimensions.
void BlankCell(vtkIdType ptId)
Methods for supporting blanking of cells.
void GetPoint(vtkIdType ptId, double p[3]) override
Standard vtkDataSet API methods.
void BlankPoint(vtkIdType ptId)
Methods for supporting blanking of cells.
vtkCell * GetCell(int i, int j, int k) override
Standard vtkDataSet API methods.
void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds) override
Standard vtkDataSet API methods.
void SetDimensions(const int dim[3])
following methods are specific to structured grid
void GetCellBounds(vtkIdType cellId, double bounds[6]) override
Standard vtkDataSet API methods.
void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) override
Standard vtkDataSet API methods.
int GetDataObjectType() override
Return what type of dataset this is.
void GetCell(vtkIdType cellId, vtkGenericCell *cell) override
Standard vtkDataSet API methods.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methdos for type information and printing.
void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) override
Standard vtkDataSet API methods.
int GetMaxCellSize() override
Standard vtkDataSet API methods.
int GetDataDimension()
Return the dimensionality of the data.
~vtkStructuredGrid() override
void ComputeScalarRange() override
Compute the range of the scalars and cache it into ScalarRange only if the cache became invalid (Scal...
vtkIdType GetNumberOfPoints() override
Standard vtkDataSet API methods.
double * GetPoint(vtkIdType ptId) override
Standard vtkDataSet API methods.
vtkIdType GetNumberOfCells() override
Standard vtkDataSet API methods.
bool HasAnyBlankCells() override
Returns 1 if there is any visibility constraint on the cells, 0 otherwise.
void UnBlankPoint(vtkIdType ptId)
Methods for supporting blanking of cells.
vtkCell * GetCell(vtkIdType cellId) override
Standard vtkDataSet API methods.
void Crop(const int *updateExtent) override
Reallocates and copies to set the Extent to the UpdateExtent.
unsigned char IsCellVisible(vtkIdType cellId)
Return non-zero value if specified point is visible.
int GetCellType(vtkIdType cellId) override
Standard vtkDataSet API methods.
void CopyStructure(vtkDataSet *ds) override
Copy the geometric and topological structure of an input poly data object.
static vtkStructuredGrid * GetData(vtkInformationVector *v, int i=0)
Retrieve an instance of this class from an information object.
virtual int * GetDimensions()
Get dimensions of this structured points dataset.
unsigned char IsPointVisible(vtkIdType ptId)
Return non-zero value if specified point is visible.
void GetPoint(int i, int j, int k, double p[3], bool adjustForExtent=true)
Get a point in the grid.
static vtkStructuredGrid * ExtendedNew()
bool HasAnyBlankPoints() override
Returns 1 if there is any visibility constraint on the points, 0 otherwise.
static vtkStructuredGrid * New()
void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds, int *seedLoc)
Standard vtkDataSet API methods.
void UnBlankCell(vtkIdType ptId)
Methods for supporting blanking of cells.
void Initialize() override
Standard vtkDataSet API methods.
vtkEmptyCell * EmptyCell
dynamic, self-adjusting array of unsigned char
a cell that represents a 3D point
Definition: vtkVertex.h:31
@ info
Definition: vtkX3D.h:382
@ extent
Definition: vtkX3D.h:351
#define VTK_3D_EXTENT
Definition: vtkDataObject.h:56
int vtkIdType
Definition: vtkType.h:332
#define VTK_STRUCTURED_GRID
Definition: vtkType.h:79
#define VTK_SIZEHINT(...)