VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkApproximatingSubdivisionFilter.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 __vtkApproximatingSubdivisionFilter_h 00027 #define __vtkApproximatingSubdivisionFilter_h 00028 00029 #include "vtkFiltersGeneralModule.h" // For export macro 00030 #include "vtkPolyDataAlgorithm.h" 00031 00032 class vtkCellArray; 00033 class vtkCellData; 00034 class vtkIdList; 00035 class vtkIntArray; 00036 class vtkPoints; 00037 class vtkPointData; 00038 00039 class VTKFILTERSGENERAL_EXPORT vtkApproximatingSubdivisionFilter : public vtkPolyDataAlgorithm 00040 { 00041 public: 00042 vtkTypeMacro(vtkApproximatingSubdivisionFilter,vtkPolyDataAlgorithm); 00043 void PrintSelf(ostream& os, vtkIndent indent); 00044 00046 00047 vtkSetMacro(NumberOfSubdivisions,int); 00048 vtkGetMacro(NumberOfSubdivisions,int); 00050 00051 protected: 00052 vtkApproximatingSubdivisionFilter(); 00053 ~vtkApproximatingSubdivisionFilter() {}; 00054 00055 int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00056 virtual void GenerateSubdivisionPoints (vtkPolyData *inputDS, 00057 vtkIntArray *edgeData, 00058 vtkPoints *outputPts, 00059 vtkPointData *outputPD) = 0; 00060 void GenerateSubdivisionCells (vtkPolyData *inputDS, vtkIntArray *edgeData, 00061 vtkCellArray *outputPolys, 00062 vtkCellData *outputCD); 00063 int FindEdge (vtkPolyData *mesh, vtkIdType cellId, vtkIdType p1, 00064 vtkIdType p2, vtkIntArray *edgeData, vtkIdList *cellIds); 00065 vtkIdType InterpolatePosition (vtkPoints *inputPts, vtkPoints *outputPts, 00066 vtkIdList *stencil, double *weights); 00067 int NumberOfSubdivisions; 00068 private: 00069 vtkApproximatingSubdivisionFilter(const vtkApproximatingSubdivisionFilter&); // Not implemented. 00070 void operator=(const vtkApproximatingSubdivisionFilter&); // Not implemented. 00071 }; 00072 00073 #endif