00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00047 #ifndef __vtkButterflySubdivisionFilter_h
00048 #define __vtkButterflySubdivisionFilter_h
00049
00050 #include "vtkInterpolatingSubdivisionFilter.h"
00051
00052 class vtkCellArray;
00053 class vtkIdList;
00054 class vtkIntArray;
00055
00056 class VTK_GRAPHICS_EXPORT vtkButterflySubdivisionFilter : public vtkInterpolatingSubdivisionFilter
00057 {
00058 public:
00060
00061 static vtkButterflySubdivisionFilter *New();
00062 vtkTypeMacro(vtkButterflySubdivisionFilter,vtkInterpolatingSubdivisionFilter);
00064
00065 protected:
00066 vtkButterflySubdivisionFilter () {};
00067 ~vtkButterflySubdivisionFilter () {};
00068
00069 private:
00070 void GenerateSubdivisionPoints(vtkPolyData *inputDS, vtkIntArray *edgeData,
00071 vtkPoints *outputPts, vtkPointData *outputPD);
00072 void GenerateButterflyStencil(vtkIdType p1, vtkIdType p2, vtkPolyData *polys,
00073 vtkIdList *stencilIds, double *weights);
00074 void GenerateLoopStencil(vtkIdType p1, vtkIdType p2, vtkPolyData *polys,
00075 vtkIdList *stencilIds, double *weights);
00076 void GenerateBoundaryStencil(vtkIdType p1, vtkIdType p2, vtkPolyData *polys,
00077 vtkIdList *stencilIds, double *weights);
00078
00079 private:
00080 vtkButterflySubdivisionFilter(const vtkButterflySubdivisionFilter&);
00081 void operator=(const vtkButterflySubdivisionFilter&);
00082 };
00083
00084 #endif
00085
00086