20 #ifndef vtkStructuredData_h
21 #define vtkStructuredData_h
23 #include "vtkCommonDataModelModule.h"
26 VTK_ABI_NAMESPACE_BEGIN
30 #define VTK_UNCHANGED 0
31 #define VTK_SINGLE_POINT 1
35 #define VTK_XY_PLANE 5
36 #define VTK_YZ_PLANE 6
37 #define VTK_XZ_PLANE 7
38 #define VTK_XYZ_GRID 8
55 static int SetDimensions(VTK_FUTURE_CONST
int inDim[3],
int dim[3]);
56 static int SetExtent(VTK_FUTURE_CONST
int inExt[6],
int ext[6]);
64 static int GetDataDescription(
int dims[3]);
65 static int GetDataDescriptionFromExtent(
int ext[6]);
72 static int GetDataDimension(
int dataDescription);
73 static int GetDataDimension(
int ext[6]);
95 static void GetCellExtentFromPointExtent(
96 const int pntExtent[6],
int cellExtent[6],
int dataDescription =
VTK_EMPTY);
102 static void GetDimensionsFromExtent(
103 const int ext[6],
int dims[3],
int dataDescription =
VTK_EMPTY);
113 static bool IsCellVisible(
vtkIdType cellId, VTK_FUTURE_CONST
int dimensions[3],
123 static void GetCellDimensionsFromExtent(
124 const int ext[6],
int celldims[3],
int dataDescription =
VTK_EMPTY);
131 static void GetCellDimensionsFromPointDimensions(
const int pntdims[3],
int cellDims[3]);
139 static void GetLocalStructuredCoordinates(
140 const int ijk[3],
const int ext[6],
int lijk[3],
int dataDescription =
VTK_EMPTY);
147 static void GetGlobalStructuredCoordinates(
148 const int lijk[3],
const int ext[6],
int ijk[3],
int dataDescription =
VTK_EMPTY);
153 static void GetCellPoints(
vtkIdType cellId,
vtkIdList* ptIds,
int dataDescription,
int dim[3]);
158 static void GetPointCells(
vtkIdType ptId,
vtkIdList* cellIds, VTK_FUTURE_CONST
int dim[3]);
165 static void GetCellNeighbors(
173 static vtkIdType ComputePointIdForExtent(
174 const int extent[6],
const int ijk[3],
int dataDescription =
VTK_EMPTY);
182 const int extent[6],
const int ijk[3],
int dataDescription =
VTK_EMPTY);
191 const int dim[3],
const int ijk[3],
int dataDescription =
VTK_EMPTY);
200 const int dim[3],
const int ijk[3],
int dataDescription =
VTK_EMPTY);
208 static void ComputeCellStructuredCoordsForExtent(
216 static void ComputeCellStructuredCoords(
224 static void ComputePointStructuredCoordsForExtent(
232 static void ComputePointStructuredCoords(
248 return ((static_cast<vtkIdType>(k) * N2 + j) * N1 + i);
259 const vtkIdType idx,
const int N1,
const int N2,
int& i,
int& j,
int& k)
262 k =
static_cast<int>(idx / N12);
263 j =
static_cast<int>((idx - k * N12) / N1);
264 i =
static_cast<int>(idx - k * N12 - j * N1);
269 template <
typename T>
270 static T
Max(
const T& a,
const T& b)
272 return (a > b) ? a : b;
304 return static_cast<vtkIdType>(ext[1] - ext[0] + 1) * static_cast<vtkIdType>(ext[3] - ext[2] + 1) *
305 static_cast<vtkIdType>(ext[5] - ext[4] + 1);
321 return static_cast<vtkIdType>(cellDims[0]) * static_cast<vtkIdType>(cellDims[1]) *
327 const int nodeExtent[6],
int cellExtent[6],
int)
329 cellExtent[0] = nodeExtent[0];
330 cellExtent[2] = nodeExtent[2];
331 cellExtent[4] = nodeExtent[4];
341 dims[0] = ext[1] - ext[0] + 1;
342 dims[1] = ext[3] - ext[2] + 1;
343 dims[2] = ext[5] - ext[4] + 1;
348 const int nodeDims[3],
int cellDims[3])
357 const int ijk[3],
const int ext[6],
int lijk[3],
int)
359 lijk[0] = ijk[0] - ext[0];
360 lijk[1] = ijk[1] - ext[2];
361 lijk[2] = ijk[2] - ext[4];
366 const int lijk[3],
const int ext[6],
int ijk[3],
int)
368 ijk[0] = ext[0] + lijk[0];
369 ijk[1] = ext[2] + lijk[1];
370 ijk[2] = ext[4] + lijk[2];
375 const int extent[6],
const int ijk[3],
int)
388 const int extent[6],
const int ijk[3],
int)
401 vtkIdType cellId,
const int dims[3],
int ijk[3],
int)
404 cellId, dims[0] - 1, dims[1] - 1, ijk[0], ijk[1], ijk[2]);
409 vtkIdType cellIdx,
const int ext[6],
int ijk[3],
int)
422 vtkIdType ptId,
const int dim[3],
int ijk[3],
int)
429 vtkIdType ptId,
const int ext[6],
int ijk[3],
int)
440 VTK_ABI_NAMESPACE_END
static void GetCellDimensionsFromExtent(const int ext[6], int celldims[3], int dataDescription=VTK_EMPTY)
Returns the cell dimensions, i.e., the number of cells along the i,j,k for the grid with the given gr...
static void GetLocalStructuredCoordinates(const int ijk[3], const int ext[6], int lijk[3], int dataDescription=VTK_EMPTY)
Given the global structured coordinates for a point or cell, ijk, w.r.t.
Singleton class for topologically regular data.
static void ComputePointStructuredCoordsForExtent(vtkIdType ptId, const int ext[6], int ijk[3], int dataDescription=VTK_EMPTY)
Given a pointId and the grid extent ext, get the structured coordinates (i-j-k).
abstract base class for most VTK objects
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
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 void GetDimensionsFromExtent(const int ext[6], int dims[3], int dataDescription=VTK_EMPTY)
Computes the structured grid dimensions based on the given extent.
static T Max(const T &a, const T &b)
static void GetGlobalStructuredCoordinates(const int lijk[3], const int ext[6], int ijk[3], int dataDescription=VTK_EMPTY)
Given local structured coordinates, and the corresponding global sub-grid extent, this method compute...
static void GetCellDimensionsFromPointDimensions(const int pntdims[3], int cellDims[3])
Given the dimensions of the grid, in pntdims, this method returns the corresponding cell dimensions f...
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 vtkIdType GetLinearIndex(const int i, const int j, const int k, const int N1, const int N2)
Computes the linear index for the given i-j-k structured of a grid with of N1 and N2 dimensions along...
a simple class to control print indentation
list of point or cell ids
static void ComputePointStructuredCoords(vtkIdType ptId, const int dim[3], int ijk[3], int dataDescription=VTK_EMPTY)
Given a pointId and grid dimensions 'dim', get the structured coordinates (i-j-k).
static void ComputeCellStructuredCoordsForExtent(vtkIdType cellIdx, const int ext[6], int ijk[3], int dataDescription=VTK_EMPTY)
Given the global grid extent and the linear index of a cell within the grid extent, this method computes the corresponding structured coordinates of the given cell.
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.
dynamic, self-adjusting array of unsigned char
static vtkIdType ComputeCellIdForExtent(const int extent[6], const int ijk[3], int dataDescription=VTK_EMPTY)
Given a location in structured coordinates (i-j-k), and the extent of the structured dataset...
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...
static void ComputeCellStructuredCoords(vtkIdType cellId, const int dim[3], int ijk[3], int dataDescription=VTK_EMPTY)
Given a cellId and grid dimensions 'dim', get the structured coordinates (i-j-k). ...
static vtkIdType ComputePointIdForExtent(const int extent[6], const int ijk[3], int dataDescription=VTK_EMPTY)
Given a location in structured coordinates (i-j-k), and the extent of the structured dataset...
static void GetStructuredCoordinates(const vtkIdType idx, const int N1, const int N2, int &i, int &j, int &k)
Returns the structured coordinates (i,j,k) for the given linear index of a grid with N1 and N2 dimens...
static void GetCellExtentFromPointExtent(const int pntExtent[6], int cellExtent[6], int dataDescription=VTK_EMPTY)
Given the point extent of a grid, this method computes the corresponding cell extent for the grid...