00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00048 #ifndef __vtkLoopSubdivisionFilter_h
00049 #define __vtkLoopSubdivisionFilter_h
00050
00051 #include "vtkApproximatingSubdivisionFilter.h"
00052
00053 class vtkPolyData;
00054 class vtkIntArray;
00055 class vtkPoints;
00056 class vtkIdList;
00057
00058 class VTK_GRAPHICS_EXPORT vtkLoopSubdivisionFilter : public vtkApproximatingSubdivisionFilter
00059 {
00060 public:
00062
00063 static vtkLoopSubdivisionFilter *New();
00064 vtkTypeRevisionMacro(vtkLoopSubdivisionFilter,vtkApproximatingSubdivisionFilter);
00066
00067 protected:
00068 vtkLoopSubdivisionFilter () {};
00069 ~vtkLoopSubdivisionFilter () {};
00070
00071 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00072
00073 void GenerateSubdivisionPoints (vtkPolyData *inputDS, vtkIntArray *edgeData,
00074 vtkPoints *outputPts,
00075 vtkPointData *outputPD);
00076 void GenerateEvenStencil (vtkIdType p1, vtkPolyData *polys,
00077 vtkIdList *stencilIds, double *weights);
00078 void GenerateOddStencil (vtkIdType p1, vtkIdType p2, vtkPolyData *polys,
00079 vtkIdList *stencilIds, double *weights);
00080
00081 virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00082
00083 private:
00084 vtkLoopSubdivisionFilter(const vtkLoopSubdivisionFilter&);
00085 void operator=(const vtkLoopSubdivisionFilter&);
00086 };
00087
00088 #endif