VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkStructuredData.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00026 #ifndef __vtkStructuredData_h 00027 #define __vtkStructuredData_h 00028 00029 #include "vtkObject.h" 00030 00031 class vtkIdList; 00032 00033 #define VTK_UNCHANGED 0 00034 #define VTK_SINGLE_POINT 1 00035 #define VTK_X_LINE 2 00036 #define VTK_Y_LINE 3 00037 #define VTK_Z_LINE 4 00038 #define VTK_XY_PLANE 5 00039 #define VTK_YZ_PLANE 6 00040 #define VTK_XZ_PLANE 7 00041 #define VTK_XYZ_GRID 8 00042 #define VTK_EMPTY 9 00043 00044 class VTK_COMMON_EXPORT vtkStructuredData : public vtkObject 00045 { 00046 public: 00047 vtkTypeMacro(vtkStructuredData,vtkObject); 00048 00050 00055 static int SetDimensions(int inDim[3], int dim[3]); 00056 static int SetExtent(int inExt[6], int ext[6]); 00058 00061 static int GetDataDescription(int dims[3]); 00062 00064 static int GetDataDimension(int dataDescription); 00065 00067 00068 static void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds, 00069 int dataDescription, int dim[3]); 00071 00073 static void GetPointCells(vtkIdType ptId, vtkIdList *cellIds, int dim[3]); 00074 00076 00078 static void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, 00079 vtkIdList *cellIds, int dim[3]); 00081 00083 00085 static vtkIdType ComputePointIdForExtent(int extent[6], int ijk[3]) { 00086 vtkIdType ydim = static_cast<vtkIdType>(extent[3] - extent[2] + 1); 00087 vtkIdType xdim = static_cast<vtkIdType>(extent[1] - extent[0] + 1); 00088 return ((ijk[2] - extent[4])*ydim + (ijk[1] - extent[2]))*xdim 00089 + (ijk[0] - extent[0]); } 00091 00093 00095 static vtkIdType ComputeCellIdForExtent(int extent[6], int ijk[3]) { 00096 vtkIdType ydim = static_cast<vtkIdType>(extent[3] - extent[2]); 00097 if (ydim == 0) ydim = 1; 00098 vtkIdType xdim = static_cast<vtkIdType>(extent[1] - extent[0]); 00099 if (xdim == 0) xdim = 1; 00100 return ((ijk[2] - extent[4])*(ydim) + (ijk[1] - extent[2]))*(xdim) 00101 + (ijk[0] - extent[0]); } 00103 00105 00108 static vtkIdType ComputePointId(int dim[3], int ijk[3]) { 00109 return (ijk[2]*static_cast<vtkIdType>(dim[1]) + ijk[1])*dim[0] + ijk[0];} 00111 00113 00116 static vtkIdType ComputeCellId(int dim[3], int ijk[3]) { 00117 return (ijk[2]*static_cast<vtkIdType>(dim[1]-1) + ijk[1])*(dim[0]-1) + ijk[0];} 00119 00120 protected: 00121 vtkStructuredData() {}; 00122 ~vtkStructuredData() {}; 00123 00124 private: 00125 vtkStructuredData(const vtkStructuredData&); // Not implemented. 00126 void operator=(const vtkStructuredData&); // Not implemented. 00127 }; 00128 00129 00130 #endif 00131