VTK  9.4.20241221
vtkRectilinearGrid.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
130#ifndef vtkRectilinearGrid_h
131#define vtkRectilinearGrid_h
132
133#include "vtkCommonDataModelModule.h" // For export macro
134#include "vtkDataSet.h"
135#include "vtkSmartPointer.h" // For vtkSmartPointer
136#include "vtkStructuredData.h" // For inline methods
137
138VTK_ABI_NAMESPACE_BEGIN
139class vtkDataArray;
141class vtkPoints;
142
143class VTKCOMMONDATAMODEL_EXPORT vtkRectilinearGrid : public vtkDataSet
144{
145public:
148
150 void PrintSelf(ostream& os, vtkIndent indent) override;
151
155 int GetDataObjectType() override { return VTK_RECTILINEAR_GRID; }
156
161 void CopyStructure(vtkDataSet* ds) override;
162
166 void Initialize() override;
167
169
172 vtkIdType GetNumberOfCells() override;
173 vtkIdType GetNumberOfPoints() override;
174 vtkPoints* GetPoints() override;
175 double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) override;
176 void GetPoint(vtkIdType id, double x[3]) override;
177 vtkCell* GetCell(vtkIdType cellId) override;
178 vtkCell* GetCell(int i, int j, int k) override;
179 void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
180 void GetCellBounds(vtkIdType cellId, double bounds[6]) override;
181 vtkIdType FindPoint(double x[3]) override;
182 vtkIdType FindCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
183 double pcoords[3], double* weights) override;
184 vtkIdType FindCell(double x[3], vtkCell* cell, vtkGenericCell* gencell, vtkIdType cellId,
185 double tol2, int& subId, double pcoords[3], double* weights) override;
186 vtkCell* FindAndGetCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
187 double pcoords[3], double* weights) override;
188 int GetCellType(vtkIdType cellId) override;
190 void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts, vtkIdList* ptIds)
191 VTK_SIZEHINT(pts, npts) override;
192 void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
193 void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override
194 {
195 vtkStructuredData::GetPointCells(ptId, cellIds, this->Dimensions);
196 }
197 void ComputeBounds() override;
198 int GetMaxCellSize() override { return 8; } // voxel is the largest
199 int GetMaxSpatialDimension() override;
200 int GetMinSpatialDimension() override;
201 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
202 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds, int* seedLoc);
204
211
219
221
227 virtual void BlankPoint(vtkIdType ptId);
228 virtual void UnBlankPoint(vtkIdType ptId);
229 virtual void BlankPoint(int i, int j, int k);
230 virtual void UnBlankPoint(int i, int j, int k);
232
234
240 virtual void BlankCell(vtkIdType ptId);
241 virtual void UnBlankCell(vtkIdType ptId);
242 virtual void BlankCell(int i, int j, int k);
243 virtual void UnBlankCell(int i, int j, int k);
245
251 unsigned char IsPointVisible(vtkIdType ptId);
252
258 unsigned char IsCellVisible(vtkIdType cellId);
259
264 bool HasAnyBlankPoints() override;
269 bool HasAnyBlankCells() override;
270
274 vtkGetMacro(DataDescription, int);
275
282 void GetCellDims(int cellDims[3]);
283
285
289 void SetDimensions(int i, int j, int k);
290 void SetDimensions(const int dim[3]);
292
294
297 vtkGetVectorMacro(Dimensions, int, 3);
299
303 int GetDataDimension();
304
311 int ComputeStructuredCoordinates(double x[3], int ijk[3], double pcoords[3]);
312
316 vtkIdType ComputePointId(int ijk[3]);
317
321 vtkIdType ComputeCellId(int ijk[3]);
322
328 void GetPoint(int i, int j, int k, double p[3]);
329
331
335 vtkGetObjectMacro(XCoordinates, vtkDataArray);
337
339
343 vtkGetObjectMacro(YCoordinates, vtkDataArray);
345
347
351 vtkGetObjectMacro(ZCoordinates, vtkDataArray);
353
355
360 void SetExtent(int extent[6]);
361 void SetExtent(int xMin, int xMax, int yMin, int yMax, int zMin, int zMax);
362 vtkGetVector6Macro(Extent, int);
364
373 unsigned long GetActualMemorySize() override;
374
376
379 void ShallowCopy(vtkDataObject* src) override;
380 void DeepCopy(vtkDataObject* src) override;
382
386 int GetExtentType() override { return VTK_3D_EXTENT; }
387
393 void Crop(const int* updateExtent) override;
394
396
402
404
407 static void SetScalarType(int, vtkInformation* meta_data);
408 static int GetScalarType(vtkInformation* meta_data);
409 static bool HasScalarType(vtkInformation* meta_data);
411 const char* GetScalarTypeAsString() { return vtkImageScalarTypeNameMacro(this->GetScalarType()); }
413
415
419 static void SetNumberOfScalarComponents(int n, vtkInformation* meta_data);
424
425protected:
428
429 int Dimensions[3];
431
432 int Extent[6];
433
437
438 // Hang on to some space for returning points when GetPoint(id) is called.
439 double Point[3];
440
444
449
450private:
451 void Cleanup();
452
453 vtkRectilinearGrid(const vtkRectilinearGrid&) = delete;
454 void operator=(const vtkRectilinearGrid&) = delete;
455};
456
457//----------------------------------------------------------------------------
459{
460 this->GetPoint(id, this->Point);
461 return this->Point;
462}
463
464//----------------------------------------------------------------------------
466{
468}
469
470//----------------------------------------------------------------------------
472{
474}
475
476//----------------------------------------------------------------------------
478{
480}
481
482//----------------------------------------------------------------------------
484{
486}
487
488//----------------------------------------------------------------------------
490{
492}
493
494//----------------------------------------------------------------------------
496{
498}
499
500//----------------------------------------------------------------------------
502{
504}
505
506VTK_ABI_NAMESPACE_END
507#endif
abstract class to specify cell behavior
Definition vtkCell.h:130
abstract superclass for arrays of numeric data
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:165
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 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 zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
represent and manipulate 3D points
Definition vtkPoints.h:139
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.
virtual void UnBlankCell(vtkIdType ptId)
Methods for supporting blanking of cells.
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.
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.
virtual void BlankCell(int i, int j, int k)
Methods for supporting blanking of cells.
virtual void BlankPoint(int i, int j, int k)
Methods for supporting blanking of cells.
virtual void BlankCell(vtkIdType ptId)
Methods for supporting blanking of cells.
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.
virtual void UnBlankCell(int i, int j, int k)
Methods for supporting blanking of cells.
vtkIdType ComputeCellId(int ijk[3])
Given a location in structured coordinates (i-j-k), return the cell id.
int GetExtentType() override
Structured extent.
vtkConstantArray< int > * GetCellTypesArray()
Get the array of all cell types in the rectilinear grid.
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
int GetMinSpatialDimension() override
Standard vtkDataSet API methods.
virtual void UnBlankPoint(int i, int j, int k)
Methods for supporting blanking of cells.
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.
int GetMaxSpatialDimension() override
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
void GetCellPoints(vtkIdType cellId, vtkIdType &npts, vtkIdType const *&pts, vtkIdList *ptIds) override
Standard vtkDataSet API methods.
const char * GetScalarTypeAsString()
Set/Get the scalar data type for the points.
vtkSmartPointer< vtkStructuredCellArray > StructuredCells
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.
vtkSmartPointer< vtkPoints > StructuredPoints
void BuildImplicitStructures()
static void SetScalarType(int, vtkInformation *meta_data)
Set/Get the scalar data type for the points.
~vtkRectilinearGrid() override
virtual void BlankPoint(vtkIdType ptId)
Methods for supporting blanking of cells.
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.
virtual void UnBlankPoint(vtkIdType ptId)
Methods for supporting blanking of cells.
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.
void GetPoint(int i, int j, int k, double p[3])
Given the IJK-coordinates of the point, it returns the corresponding xyz-coordinates.
vtkIdType GetCellSize(vtkIdType cellId) override
Standard vtkDataSet API methods.
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.
vtkSmartPointer< vtkConstantArray< int > > StructuredCellTypes
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()
vtkStructuredCellArray * GetCells()
Return the rectilinear grid connectivity array.
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.
vtkPoints * GetPoints() override
Standard vtkDataSet API methods.
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.
Hold a reference to a vtkObjectBase instance.
implicit object to represent cell connectivity
static vtkIdType GetNumberOfCells(const int ext[6], int dataDescription=VTK_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 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, VTK_FUTURE_CONST int dim[3])
Get the cells using a point.
static vtkIdType GetNumberOfPoints(const int ext[6], int dataDescription=VTK_EMPTY)
Given the grid extent, this method returns the total number of points within the extent.
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,...
#define VTK_3D_EXTENT
int vtkIdType
Definition vtkType.h:315
#define VTK_RECTILINEAR_GRID
Definition vtkType.h:68
#define VTK_SIZEHINT(...)