00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00030 #ifndef __vtkUnstructuredGrid_h
00031 #define __vtkUnstructuredGrid_h
00032
00033 #include "vtkPointSet.h"
00034
00035 class vtkCellArray;
00036 class vtkCellLinks;
00037 class vtkConvexPointSet;
00038 class vtkEmptyCell;
00039 class vtkHexahedron;
00040 class vtkIdList;
00041 class vtkIdTypeArray;
00042 class vtkLine;
00043 class vtkPixel;
00044 class vtkPolyLine;
00045 class vtkPolyVertex;
00046 class vtkPolygon;
00047 class vtkPyramid;
00048 class vtkPentagonalPrism;
00049 class vtkHexagonalPrism;
00050 class vtkQuad;
00051 class vtkQuadraticEdge;
00052 class vtkQuadraticHexahedron;
00053 class vtkQuadraticWedge;
00054 class vtkQuadraticPyramid;
00055 class vtkQuadraticQuad;
00056 class vtkQuadraticTetra;
00057 class vtkQuadraticTriangle;
00058 class vtkTetra;
00059 class vtkTriangle;
00060 class vtkTriangleStrip;
00061 class vtkUnsignedCharArray;
00062 class vtkVertex;
00063 class vtkVoxel;
00064 class vtkWedge;
00065 class vtkTriQuadraticHexahedron;
00066 class vtkQuadraticLinearWedge;
00067 class vtkQuadraticLinearQuad;
00068 class vtkBiQuadraticQuad;
00069 class vtkBiQuadraticQuadraticWedge;
00070 class vtkBiQuadraticQuadraticHexahedron;
00071 class vtkBiQuadraticTriangle;
00072 class vtkCubicLine;
00073
00074
00075 class VTK_FILTERING_EXPORT vtkUnstructuredGrid : public vtkPointSet
00076 {
00077 public:
00078 static vtkUnstructuredGrid *New();
00079
00080 vtkTypeMacro(vtkUnstructuredGrid,vtkPointSet);
00081 void PrintSelf(ostream& os, vtkIndent indent);
00082
00084
00085 int GetDataObjectType() {return VTK_UNSTRUCTURED_GRID;};
00086 virtual void Allocate(vtkIdType numCells=1000, int extSize=1000);
00088
00090
00092 vtkIdType InsertNextCell(int type, vtkIdType npts, vtkIdType *pts);
00093 vtkIdType InsertNextCell(int type, vtkIdList *ptIds);
00095
00096 void Reset();
00097 virtual void CopyStructure(vtkDataSet *ds);
00098 vtkIdType GetNumberOfCells();
00099 virtual vtkCell *GetCell(vtkIdType cellId);
00100 virtual void GetCell(vtkIdType cellId, vtkGenericCell *cell);
00101 virtual void GetCellBounds(vtkIdType cellId, double bounds[6]);
00102 virtual void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds);
00103 void GetPointCells(vtkIdType ptId, vtkIdList *cellIds);
00104
00105 int GetCellType(vtkIdType cellId);
00106 vtkUnsignedCharArray* GetCellTypesArray() { return this->Types; }
00107 vtkIdTypeArray* GetCellLocationsArray() { return this->Locations; }
00108 void Squeeze();
00109 void Initialize();
00110 int GetMaxCellSize();
00111 void BuildLinks();
00112 vtkCellLinks *GetCellLinks() {return this->Links;};
00113 virtual void GetCellPoints(vtkIdType cellId, vtkIdType& npts,
00114 vtkIdType* &pts);
00115
00117
00119 void SetCells(int type, vtkCellArray *cells);
00120 void SetCells(int *types, vtkCellArray *cells);
00121 void SetCells(vtkUnsignedCharArray *cellTypes, vtkIdTypeArray *cellLocations,
00122 vtkCellArray *cells);
00123 vtkCellArray *GetCells() {return this->Connectivity;};
00124 void ReplaceCell(vtkIdType cellId, int npts, vtkIdType *pts);
00125 int InsertNextLinkedCell(int type, int npts, vtkIdType *pts);
00126 void RemoveReferenceToCell(vtkIdType ptId, vtkIdType cellId);
00127 void AddReferenceToCell(vtkIdType ptId, vtkIdType cellId);
00128 void ResizeCellList(vtkIdType ptId, int size);
00130
00132
00135 virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds,
00136 vtkIdList *cellIds);
00138
00142 void GetUpdateExtent(int &piece, int &numPieces, int &ghostLevel);
00143
00145
00146 virtual int* GetUpdateExtent();
00147 virtual void GetUpdateExtent(int& x0, int& x1, int& y0, int& y1,
00148 int& z0, int& z1);
00149 virtual void GetUpdateExtent(int extent[6]);
00151
00153
00155 virtual int GetPiece();
00156 virtual int GetNumberOfPieces();
00158
00160 virtual int GetGhostLevel();
00161
00167 unsigned long GetActualMemorySize();
00168
00170
00171 virtual void ShallowCopy(vtkDataObject *src);
00172 virtual void DeepCopy(vtkDataObject *src);
00174
00178 void GetIdsOfCellsOfType(int type, vtkIdTypeArray *array);
00179
00181 int IsHomogeneous();
00182
00185 void RemoveGhostCells(int level);
00186
00187
00189
00190 static vtkUnstructuredGrid* GetData(vtkInformation* info);
00191 static vtkUnstructuredGrid* GetData(vtkInformationVector* v, int i=0);
00192
00194
00195 protected:
00196 vtkUnstructuredGrid();
00197 ~vtkUnstructuredGrid();
00198
00199
00200 vtkVertex *Vertex;
00201 vtkPolyVertex *PolyVertex;
00202 vtkLine *Line;
00203 vtkPolyLine *PolyLine;
00204 vtkTriangle *Triangle;
00205 vtkTriangleStrip *TriangleStrip;
00206 vtkPixel *Pixel;
00207 vtkQuad *Quad;
00208 vtkPolygon *Polygon;
00209 vtkTetra *Tetra;
00210 vtkVoxel *Voxel;
00211 vtkHexahedron *Hexahedron;
00212 vtkWedge *Wedge;
00213 vtkPyramid *Pyramid;
00214 vtkPentagonalPrism *PentagonalPrism;
00215 vtkHexagonalPrism *HexagonalPrism;
00216 vtkQuadraticEdge *QuadraticEdge;
00217 vtkQuadraticTriangle *QuadraticTriangle;
00218 vtkQuadraticQuad *QuadraticQuad;
00219 vtkQuadraticTetra *QuadraticTetra;
00220 vtkQuadraticHexahedron *QuadraticHexahedron;
00221 vtkQuadraticWedge *QuadraticWedge;
00222 vtkQuadraticPyramid *QuadraticPyramid;
00223 vtkQuadraticLinearQuad *QuadraticLinearQuad;
00224 vtkBiQuadraticQuad *BiQuadraticQuad;
00225 vtkTriQuadraticHexahedron *TriQuadraticHexahedron;
00226 vtkQuadraticLinearWedge *QuadraticLinearWedge;
00227 vtkBiQuadraticQuadraticWedge *BiQuadraticQuadraticWedge;
00228 vtkBiQuadraticQuadraticHexahedron *BiQuadraticQuadraticHexahedron;
00229 vtkBiQuadraticTriangle *BiQuadraticTriangle;
00230 vtkCubicLine *CubicLine;
00231 vtkConvexPointSet *ConvexPointSet;
00232 vtkEmptyCell *EmptyCell;
00233
00234
00235
00236 vtkCellArray *Connectivity;
00237 vtkCellLinks *Links;
00238 vtkUnsignedCharArray *Types;
00239 vtkIdTypeArray *Locations;
00240
00241 private:
00242 void Cleanup();
00243
00244
00245
00247 VTK_LEGACY(void GetCellNeighbors(vtkIdType cellId, vtkIdList& ptIds, vtkIdList& cellIds));
00248
00249 vtkUnstructuredGrid(const vtkUnstructuredGrid&);
00250 void operator=(const vtkUnstructuredGrid&);
00251 };
00252
00253 #endif
00254
00255
00256
00257
00258
00259
00260