VTK  9.1.0
vtkRectilinearGrid.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkRectilinearGrid.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=========================================================================*/
46#ifndef vtkRectilinearGrid_h
47#define vtkRectilinearGrid_h
48
49#include "vtkCommonDataModelModule.h" // For export macro
50#include "vtkDataSet.h"
51#include "vtkStructuredData.h" // For inline methods
52
53class vtkVertex;
54class vtkLine;
55class vtkPixel;
56class vtkVoxel;
57class vtkDataArray;
58class vtkPoints;
59
60class VTKCOMMONDATAMODEL_EXPORT vtkRectilinearGrid : public vtkDataSet
61{
62public:
65
67 void PrintSelf(ostream& os, vtkIndent indent) override;
68
72 int GetDataObjectType() override { return VTK_RECTILINEAR_GRID; }
73
78 void CopyStructure(vtkDataSet* ds) override;
79
83 void Initialize() override;
84
86
89 vtkIdType GetNumberOfCells() override;
91 double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) override;
92 void GetPoint(vtkIdType id, double x[3]) override;
93 vtkCell* GetCell(vtkIdType cellId) override;
94 vtkCell* GetCell(int i, int j, int k) override;
95 void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
96 void GetCellBounds(vtkIdType cellId, double bounds[6]) override;
97 vtkIdType FindPoint(double x, double y, double z) { return this->vtkDataSet::FindPoint(x, y, z); }
98 vtkIdType FindPoint(double x[3]) override;
99 vtkIdType FindCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
100 double pcoords[3], double* weights) override;
101 vtkIdType FindCell(double x[3], vtkCell* cell, vtkGenericCell* gencell, vtkIdType cellId,
102 double tol2, int& subId, double pcoords[3], double* weights) override;
103 vtkCell* FindAndGetCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
104 double pcoords[3], double* weights) override;
105 int GetCellType(vtkIdType cellId) override;
106 void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override
107 {
108 vtkStructuredData::GetCellPoints(cellId, ptIds, this->DataDescription, this->Dimensions);
109 }
110 void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override
111 {
112 vtkStructuredData::GetPointCells(ptId, cellIds, this->Dimensions);
113 }
114 void ComputeBounds() override;
115 int GetMaxCellSize() override { return 8; } // voxel is the largest
116 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
117 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds, int* seedLoc);
119
125 unsigned char IsPointVisible(vtkIdType ptId);
126
132 unsigned char IsCellVisible(vtkIdType cellId);
133
138 bool HasAnyBlankPoints() override;
143 bool HasAnyBlankCells() override;
144
151 void GetCellDims(int cellDims[3]);
152
157 void GetPoints(vtkPoints* pnts);
158
160
164 void SetDimensions(int i, int j, int k);
165 void SetDimensions(const int dim[3]);
167
169
172 vtkGetVectorMacro(Dimensions, int, 3);
174
178 int GetDataDimension();
179
186 int ComputeStructuredCoordinates(double x[3], int ijk[3], double pcoords[3]);
187
191 vtkIdType ComputePointId(int ijk[3]);
192
196 vtkIdType ComputeCellId(int ijk[3]);
197
203 void GetPoint(const int i, const int j, const int k, double p[3]);
204
206
210 vtkGetObjectMacro(XCoordinates, vtkDataArray);
212
214
218 vtkGetObjectMacro(YCoordinates, vtkDataArray);
220
222
226 vtkGetObjectMacro(ZCoordinates, vtkDataArray);
228
230
235 void SetExtent(int extent[6]);
236 void SetExtent(int xMin, int xMax, int yMin, int yMax, int zMin, int zMax);
237 vtkGetVector6Macro(Extent, int);
239
248 unsigned long GetActualMemorySize() override;
249
251
254 void ShallowCopy(vtkDataObject* src) override;
255 void DeepCopy(vtkDataObject* src) override;
257
261 int GetExtentType() override { return VTK_3D_EXTENT; }
262
268 void Crop(const int* updateExtent) override;
269
271
277
279
282 static void SetScalarType(int, vtkInformation* meta_data);
283 static int GetScalarType(vtkInformation* meta_data);
284 static bool HasScalarType(vtkInformation* meta_data);
286 const char* GetScalarTypeAsString() { return vtkImageScalarTypeNameMacro(this->GetScalarType()); }
288
290
294 static void SetNumberOfScalarComponents(int n, vtkInformation* meta_data);
299
300protected:
303
304 // for the GetCell method
309
310 int Dimensions[3];
312
313 int Extent[6];
314
318
319 // Hang on to some space for returning points when GetPoint(id) is called.
320 double PointReturn[3];
321
322private:
323 void Cleanup();
324
325private:
326 vtkRectilinearGrid(const vtkRectilinearGrid&) = delete;
327 void operator=(const vtkRectilinearGrid&) = delete;
328};
329
330//----------------------------------------------------------------------------
332{
333 vtkIdType nCells = 1;
334 int i;
335
336 for (i = 0; i < 3; i++)
337 {
338 if (this->Dimensions[i] <= 0)
339 {
340 return 0;
341 }
342 if (this->Dimensions[i] > 1)
343 {
344 nCells *= (this->Dimensions[i] - 1);
345 }
346 }
347
348 return nCells;
349}
350
351//----------------------------------------------------------------------------
353{
354 return static_cast<vtkIdType>(this->Dimensions[0]) * this->Dimensions[1] * this->Dimensions[2];
355}
356
357//----------------------------------------------------------------------------
359{
361}
362
363//----------------------------------------------------------------------------
365{
367}
368
369//----------------------------------------------------------------------------
371{
373}
374
375#endif
abstract class to specify cell behavior
Definition: vtkCell.h:67
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:59
general representation of visualization data
Definition: vtkDataObject.h:69
abstract class to specify dataset behavior
Definition: vtkDataSet.h:66
virtual vtkIdType GetNumberOfPoints()=0
Determine the number of points composing the dataset.
virtual vtkIdType GetNumberOfCells()=0
Determine the number of cells composing the dataset.
vtkIdType FindPoint(double x, double y, double z)
Locate the closest point to the global coordinate x.
Definition: vtkDataSet.h:210
provides thread-safe access to cells
list of point or cell ids
Definition: vtkIdList.h:40
a simple class to control print indentation
Definition: vtkIndent.h:43
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
cell represents a 1D line
Definition: vtkLine.h:40
a cell that represents an orthogonal quadrilateral
Definition: vtkPixel.h:44
represent and manipulate 3D points
Definition: vtkPoints.h:43
a dataset that is topologically regular with variable spacing in the three coordinate directions
static vtkRectilinearGrid * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
static bool HasScalarType(vtkInformation *meta_data)
Set/Get the scalar data type for the points.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void Initialize() override
Restore object to initial state.
unsigned long GetActualMemorySize() override
Return the actual size of the data in kibibytes (1024 bytes).
vtkIdType FindCell(double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights) override
Standard vtkDataSet API methods.
virtual void SetZCoordinates(vtkDataArray *)
Specify the grid coordinates in the z-direction.
void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) override
Standard vtkDataSet API methods.
void GetPoint(const int i, const int j, const int k, double p[3])
Given the IJK-coordinates of the point, it returns the corresponding xyz-coordinates.
vtkIdType GetNumberOfPoints() override
Standard vtkDataSet API methods.
bool HasAnyBlankCells() override
Returns 1 if there is any visibility constraint on the cells, 0 otherwise.
unsigned char IsCellVisible(vtkIdType cellId)
Return non-zero value if specified point is visible.
bool HasAnyBlankPoints() override
Returns 1 if there is any visibility constraint on the points, 0 otherwise.
virtual void SetYCoordinates(vtkDataArray *)
Specify the grid coordinates in the y-direction.
virtual void SetXCoordinates(vtkDataArray *)
Specify the grid coordinates in the x-direction.
vtkIdType ComputeCellId(int ijk[3])
Given a location in structured coordinates (i-j-k), return the cell id.
int GetExtentType() override
Structured extent.
void DeepCopy(vtkDataObject *src) override
Shallow and Deep copy.
static vtkRectilinearGrid * GetData(vtkInformationVector *v, int i=0)
Retrieve an instance of this class from an information object.
vtkDataArray * YCoordinates
vtkCell * GetCell(vtkIdType cellId) override
Standard vtkDataSet API methods.
vtkIdType GetNumberOfCells() override
Standard vtkDataSet API methods.
void SetExtent(int extent[6])
Different ways to set the extent of the data array.
vtkIdType FindPoint(double x, double y, double z)
Standard vtkDataSet API methods.
int GetDataObjectType() override
Return what type of dataset this is.
static void SetNumberOfScalarComponents(int n, vtkInformation *meta_data)
Set/Get the number of scalar components for points.
static int GetNumberOfScalarComponents(vtkInformation *meta_data)
Set/Get the number of scalar components for points.
vtkDataArray * XCoordinates
const char * GetScalarTypeAsString()
Set/Get the scalar data type for the points.
void CopyStructure(vtkDataSet *ds) override
Copy the geometric and topological structure of an input rectilinear grid object.
static int GetScalarType(vtkInformation *meta_data)
Set/Get the scalar data type for the points.
void SetDimensions(int i, int j, int k)
Set dimensions of rectilinear grid dataset.
void GetPoints(vtkPoints *pnts)
Given a user-supplied vtkPoints container object, this method fills in all the points of the Rectilin...
static void SetScalarType(int, vtkInformation *meta_data)
Set/Get the scalar data type for the points.
~vtkRectilinearGrid() override
void GetCellDims(int cellDims[3])
Given the node dimensions of this grid instance, this method computes the node dimensions.
unsigned char IsPointVisible(vtkIdType ptId)
Return non-zero value if specified point is visible.
vtkIdType ComputePointId(int ijk[3])
Given a location in structured coordinates (i-j-k), return the point id.
void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) override
Standard vtkDataSet API methods.
static bool HasNumberOfScalarComponents(vtkInformation *meta_data)
Set/Get the number of scalar components for points.
vtkIdType FindPoint(double x[3]) override
Standard vtkDataSet API methods.
int GetNumberOfScalarComponents()
Set/Get the number of scalar components for points.
int GetCellType(vtkIdType cellId) override
Standard vtkDataSet API methods.
void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds, int *seedLoc)
Standard vtkDataSet API methods.
void GetPoint(vtkIdType id, double x[3]) override
Standard vtkDataSet API methods.
double * GetPoint(vtkIdType ptId) override
Standard vtkDataSet API methods.
vtkDataArray * ZCoordinates
void GetCellBounds(vtkIdType cellId, double bounds[6]) override
Standard vtkDataSet API methods.
vtkCell * GetCell(int i, int j, int k) override
Standard vtkDataSet API methods.
static vtkRectilinearGrid * New()
int GetScalarType()
Set/Get the scalar data type for the points.
int GetDataDimension()
Return the dimensionality of the data.
void ComputeBounds() override
Standard vtkDataSet API methods.
void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds) override
Standard vtkDataSet API methods.
void Crop(const int *updateExtent) override
Reallocates and copies to set the Extent to the UpdateExtent.
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.
vtkCell * FindAndGetCell(double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights) override
Standard vtkDataSet API methods.
int ComputeStructuredCoordinates(double x[3], int ijk[3], double pcoords[3])
Convenience function computes the structured coordinates for a point x[3].
int GetMaxCellSize() override
Standard vtkDataSet API methods.
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
static vtkRectilinearGrid * ExtendedNew()
void SetExtent(int xMin, int xMax, int yMin, int yMax, int zMin, int zMax)
Different ways to set the extent of the data array.
void GetCell(vtkIdType cellId, vtkGenericCell *cell) override
Standard vtkDataSet API methods.
void SetDimensions(const int dim[3])
Set dimensions of rectilinear grid dataset.
static void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds, int dataDescription, int dim[3])
Get the points defining a cell.
static int GetDataDimension(int dataDescription)
Return the topological dimension of the data (e.g., 0, 1, 2, or 3D).
static vtkIdType ComputePointId(const int dim[3], const int ijk[3], int dataDescription=VTK_EMPTY)
Given a location in structured coordinates (i-j-k), and the dimensions of the structured dataset,...
static void GetPointCells(vtkIdType ptId, vtkIdList *cellIds, int dim[3])
Get the cells using a point.
static vtkIdType ComputeCellId(const int dim[3], const int ijk[3], int dataDescription=VTK_EMPTY)
Given a location in structured coordinates (i-j-k), and the dimensions of the structured dataset,...
a cell that represents a 3D point
Definition: vtkVertex.h:40
a cell that represents a 3D orthogonal parallelepiped
Definition: vtkVoxel.h:48
@ info
Definition: vtkX3D.h:382
@ extent
Definition: vtkX3D.h:351
#define VTK_3D_EXTENT
Definition: vtkDataObject.h:65
int vtkIdType
Definition: vtkType.h:332
#define VTK_RECTILINEAR_GRID
Definition: vtkType.h:80
#define VTK_SIZEHINT(...)