You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							232 lines
						
					
					
						
							7.8 KiB
						
					
					
				
			
		
		
	
	
							232 lines
						
					
					
						
							7.8 KiB
						
					
					
				| /*=========================================================================
 | |
| 
 | |
|   Program:   Visualization Toolkit
 | |
|   Module:    $RCSfile: vtkUnstructuredGrid.h,v $
 | |
| 
 | |
|   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
 | |
|   All rights reserved.
 | |
|   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
 | |
| 
 | |
|      This software is distributed WITHOUT ANY WARRANTY; without even
 | |
|      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 | |
|      PURPOSE.  See the above copyright notice for more information.
 | |
| 
 | |
| =========================================================================*/
 | |
| // .NAME vtkUnstructuredGrid - dataset represents arbitrary combinations of all possible cell types
 | |
| // .SECTION Description
 | |
| // vtkUnstructuredGrid is a data object that is a concrete implementation 
 | |
| // of vtkDataSet. vtkUnstructuredGrid represents any combinations of any cell
 | |
| // types. This includes 0D (e.g., points), 1D (e.g., lines, polylines), 2D 
 | |
| // (e.g., triangles, polygons), and 3D (e.g., hexahedron, tetrahedron).
 | |
| 
 | |
| #ifndef __vtkUnstructuredGrid_h
 | |
| #define __vtkUnstructuredGrid_h
 | |
| 
 | |
| #include "vtkPointSet.h"
 | |
| 
 | |
| class vtkCellArray;
 | |
| class vtkCellLinks;
 | |
| class vtkConvexPointSet;
 | |
| class vtkEmptyCell;
 | |
| class vtkHexahedron;
 | |
| class vtkIdList;
 | |
| class vtkIdTypeArray;
 | |
| class vtkLine;
 | |
| class vtkPixel;
 | |
| class vtkPolyLine;
 | |
| class vtkPolyVertex;
 | |
| class vtkPolygon;
 | |
| class vtkPyramid;
 | |
| class vtkPentagonalPrism;
 | |
| class vtkHexagonalPrism;
 | |
| class vtkQuad;
 | |
| class vtkQuadraticEdge;
 | |
| class vtkQuadraticHexahedron;
 | |
| class vtkQuadraticWedge;
 | |
| class vtkQuadraticPyramid;
 | |
| class vtkQuadraticQuad;
 | |
| class vtkQuadraticTetra;
 | |
| class vtkQuadraticTriangle;
 | |
| class vtkTetra;
 | |
| class vtkTriangle;
 | |
| class vtkTriangleStrip;
 | |
| class vtkUnsignedCharArray;
 | |
| class vtkVertex;
 | |
| class vtkVoxel;
 | |
| class vtkWedge;
 | |
| 
 | |
| class VTK_FILTERING_EXPORT vtkUnstructuredGrid : public vtkPointSet 
 | |
| {
 | |
| public:
 | |
|   static vtkUnstructuredGrid *New();
 | |
| 
 | |
|   vtkTypeRevisionMacro(vtkUnstructuredGrid,vtkPointSet);
 | |
|   void PrintSelf(ostream& os, vtkIndent indent);
 | |
| 
 | |
|   // Description:
 | |
|   // Standard vtkDataSet API methods. See vtkDataSet for more information.
 | |
|   int GetDataObjectType() {return VTK_UNSTRUCTURED_GRID;};
 | |
|   virtual void Allocate(vtkIdType numCells=1000, int extSize=1000);
 | |
|   
 | |
|   // Description:
 | |
|   // Insert/create cell in object by type and list of point ids defining
 | |
|   // cell topology.
 | |
|   vtkIdType InsertNextCell(int type, vtkIdType npts, vtkIdType *pts);
 | |
|   vtkIdType InsertNextCell(int type, vtkIdList *ptIds);
 | |
|   
 | |
|   void Reset();
 | |
|   virtual void CopyStructure(vtkDataSet *ds);
 | |
|   vtkIdType GetNumberOfCells();
 | |
|   virtual vtkCell *GetCell(vtkIdType cellId);
 | |
|   virtual void GetCell(vtkIdType cellId, vtkGenericCell *cell);
 | |
|   virtual void GetCellBounds(vtkIdType cellId, double bounds[6]);
 | |
|   virtual void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds);
 | |
|   void GetPointCells(vtkIdType ptId, vtkIdList *cellIds);
 | |
| 
 | |
|   int GetCellType(vtkIdType cellId);
 | |
|   vtkUnsignedCharArray* GetCellTypesArray() { return this->Types; }
 | |
|   vtkIdTypeArray* GetCellLocationsArray() { return this->Locations; }
 | |
|   void Squeeze();
 | |
|   void Initialize();
 | |
|   int GetMaxCellSize();
 | |
|   void BuildLinks();
 | |
|   vtkCellLinks *GetCellLinks() {return this->Links;};
 | |
|   virtual void GetCellPoints(vtkIdType cellId, vtkIdType& npts,
 | |
|                              vtkIdType* &pts);
 | |
| 
 | |
|   // Description:
 | |
|   // Special methods specific to vtkUnstructuredGrid for defining the cells
 | |
|   // composing the dataset.
 | |
|   void SetCells(int type, vtkCellArray *cells);
 | |
|   void SetCells(int *types, vtkCellArray *cells);
 | |
|   void SetCells(vtkUnsignedCharArray *cellTypes, vtkIdTypeArray *cellLocations, 
 | |
|                 vtkCellArray *cells);
 | |
|   vtkCellArray *GetCells() {return this->Connectivity;};
 | |
|   void ReplaceCell(vtkIdType cellId, int npts, vtkIdType *pts);
 | |
|   int InsertNextLinkedCell(int type, int npts, vtkIdType *pts);
 | |
|   void RemoveReferenceToCell(vtkIdType ptId, vtkIdType cellId);
 | |
|   void AddReferenceToCell(vtkIdType ptId, vtkIdType cellId);
 | |
|   void ResizeCellList(vtkIdType ptId, int size);
 | |
| 
 | |
|   // Description:
 | |
|   // Topological inquiry to get all cells using list of points exclusive of
 | |
|   // cell specified (e.g., cellId).
 | |
|   // THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND
 | |
|   // THE DATASET IS NOT MODIFIED
 | |
|   virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, 
 | |
|                                 vtkIdList *cellIds);
 | |
| 
 | |
|   // Description:
 | |
|   // For streaming.  User/next filter specifies which piece the want updated.
 | |
|   // The source of this poly data has to return exactly this piece.
 | |
|   void GetUpdateExtent(int &piece, int &numPieces, int &ghostLevel);
 | |
| 
 | |
|   // Description:
 | |
|   // We need this here to avoid hiding superclass method
 | |
|   virtual int* GetUpdateExtent();
 | |
|   virtual void GetUpdateExtent(int& x0, int& x1, int& y0, int& y1,
 | |
|                                int& z0, int& z1);
 | |
|   virtual void GetUpdateExtent(int extent[6]);
 | |
| 
 | |
|   // Description:
 | |
|   // Set / Get the piece and the number of pieces. Similar to extent in 3D.
 | |
|   virtual int GetPiece();
 | |
|   virtual int GetNumberOfPieces();
 | |
| 
 | |
|   // Description:
 | |
|   // Get the ghost level.
 | |
|   virtual int GetGhostLevel();
 | |
|   
 | |
|   // Description:
 | |
|   // Return the actual size of the data in kilobytes. This number
 | |
|   // is valid only after the pipeline has updated. The memory size
 | |
|   // returned is guaranteed to be greater than or equal to the
 | |
|   // memory required to represent the data (e.g., extra space in
 | |
|   // arrays, etc. are not included in the return value). THIS METHOD
 | |
|   // IS THREAD SAFE.
 | |
|   unsigned long GetActualMemorySize();
 | |
|     
 | |
|   // Description:
 | |
|   // Shallow and Deep copy.
 | |
|   virtual void ShallowCopy(vtkDataObject *src);  
 | |
|   virtual void DeepCopy(vtkDataObject *src);
 | |
| 
 | |
|   // Description:
 | |
|   // Fill vtkIdTypeArray container with list of cell Ids.  This
 | |
|   // method traverses all cells and, for a particular cell type,
 | |
|   // inserts the cell Id into the container.
 | |
|   void GetIdsOfCellsOfType(int type, vtkIdTypeArray *array);
 | |
| 
 | |
|   // Description:
 | |
|   // Traverse cells and determine if cells are all of the same type.
 | |
|   int IsHomogeneous();
 | |
| 
 | |
|   // Description:
 | |
|   // This method will remove any cell that has a ghost level array value
 | |
|   // greater or equal to level.
 | |
|   void RemoveGhostCells(int level);
 | |
| 
 | |
|   //BTX
 | |
|   // Description:
 | |
|   // Retrieve an instance of this class from an information object.
 | |
|   static vtkUnstructuredGrid* GetData(vtkInformation* info);
 | |
|   static vtkUnstructuredGrid* GetData(vtkInformationVector* v, int i=0);
 | |
|   //ETX
 | |
| 
 | |
| protected:
 | |
|   vtkUnstructuredGrid();
 | |
|   ~vtkUnstructuredGrid();
 | |
| 
 | |
|   // used by GetCell method
 | |
|   vtkVertex              *Vertex;
 | |
|   vtkPolyVertex          *PolyVertex;
 | |
|   vtkLine                *Line;
 | |
|   vtkPolyLine            *PolyLine;
 | |
|   vtkTriangle            *Triangle;
 | |
|   vtkTriangleStrip       *TriangleStrip;
 | |
|   vtkPixel               *Pixel;
 | |
|   vtkQuad                *Quad;
 | |
|   vtkPolygon             *Polygon;
 | |
|   vtkTetra               *Tetra;
 | |
|   vtkVoxel               *Voxel;
 | |
|   vtkHexahedron          *Hexahedron;
 | |
|   vtkWedge               *Wedge;
 | |
|   vtkPyramid             *Pyramid;
 | |
|   vtkPentagonalPrism     *PentagonalPrism;
 | |
|   vtkHexagonalPrism      *HexagonalPrism;
 | |
|   vtkQuadraticEdge       *QuadraticEdge;
 | |
|   vtkQuadraticTriangle   *QuadraticTriangle;
 | |
|   vtkQuadraticQuad       *QuadraticQuad;
 | |
|   vtkQuadraticTetra      *QuadraticTetra;
 | |
|   vtkQuadraticHexahedron *QuadraticHexahedron;
 | |
|   vtkQuadraticWedge      *QuadraticWedge;
 | |
|   vtkQuadraticPyramid    *QuadraticPyramid;
 | |
|   vtkConvexPointSet      *ConvexPointSet;
 | |
|   vtkEmptyCell           *EmptyCell;
 | |
|   
 | |
|   // points inherited
 | |
|   // point data (i.e., scalars, vectors, normals, tcoords) inherited
 | |
|   vtkCellArray *Connectivity;
 | |
|   vtkCellLinks *Links;
 | |
|   vtkUnsignedCharArray *Types;
 | |
|   vtkIdTypeArray *Locations;
 | |
| 
 | |
|  private:
 | |
|   // Hide these from the user and the compiler.
 | |
|   
 | |
|   // Description:
 | |
|   // For legacy compatibility. Do not use.
 | |
|   VTK_LEGACY(void GetCellNeighbors(vtkIdType cellId, vtkIdList& ptIds, vtkIdList& cellIds));
 | |
| 
 | |
|   vtkUnstructuredGrid(const vtkUnstructuredGrid&);  // Not implemented.
 | |
|   void operator=(const vtkUnstructuredGrid&);  // Not implemented.
 | |
| };
 | |
| 
 | |
| #endif
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |