00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00029 #ifndef __vtkInterpolatingSubdivisionFilter_h
00030 #define __vtkInterpolatingSubdivisionFilter_h
00031
00032 #include "vtkPolyDataAlgorithm.h"
00033
00034 class vtkCellArray;
00035 class vtkCellData;
00036 class vtkIdList;
00037 class vtkIntArray;
00038 class vtkPointData;
00039 class vtkPoints;
00040 class vtkPolyData;
00041
00042 class VTK_GRAPHICS_EXPORT vtkInterpolatingSubdivisionFilter : public vtkPolyDataAlgorithm
00043 {
00044 public:
00045 vtkTypeMacro(vtkInterpolatingSubdivisionFilter,vtkPolyDataAlgorithm);
00046 void PrintSelf(ostream& os, vtkIndent indent);
00047
00049
00050 vtkSetMacro(NumberOfSubdivisions,int);
00051 vtkGetMacro(NumberOfSubdivisions,int);
00053
00054 protected:
00055 vtkInterpolatingSubdivisionFilter();
00056 ~vtkInterpolatingSubdivisionFilter() {};
00057
00058 int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00059 virtual void GenerateSubdivisionPoints (vtkPolyData *inputDS, vtkIntArray *edgeData, vtkPoints *outputPts, vtkPointData *outputPD) = 0;
00060 void GenerateSubdivisionCells (vtkPolyData *inputDS, vtkIntArray *edgeData, vtkCellArray *outputPolys, vtkCellData *outputCD);
00061 int FindEdge (vtkPolyData *mesh, vtkIdType cellId, vtkIdType p1,
00062 vtkIdType p2, vtkIntArray *edgeData, vtkIdList *cellIds);
00063 vtkIdType InterpolatePosition (vtkPoints *inputPts, vtkPoints *outputPts,
00064 vtkIdList *stencil, double *weights);
00065 int NumberOfSubdivisions;
00066
00067 private:
00068 vtkInterpolatingSubdivisionFilter(const vtkInterpolatingSubdivisionFilter&);
00069 void operator=(const vtkInterpolatingSubdivisionFilter&);
00070 };
00071
00072 #endif
00073
00074