1 /*=========================================================================
3 Program: Visualization Toolkit
4 Module: $RCSfile: vtkInterpolatingSubdivisionFilter.h,v $
6 Date: $Date: 2002/09/03 12:52:23 $
7 Version: $Revision: 1.16 $
9 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen
11 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notice for more information.
17 =========================================================================*/
18 // .NAME vtkInterpolatingSubdivisionFilter - generate a subdivision surface using an Interpolating Scheme
19 // .SECTION Description
20 // vtkInterpolatingSubdivisionFilter is an abstract class that defines
21 // the protocol for interpolating subdivision surface filters.
24 // This work was supported by PHS Research Grant No. 1 P41 RR13218-01
25 // from the National Center for Research Resources.
28 // vtkLinearSubdivisionFilter vtkButterflySubdivisionFilter
30 #ifndef __vtkInterpolatingSubdivisionFilter_h
31 #define __vtkInterpolatingSubdivisionFilter_h
33 #include "vtkPolyDataToPolyDataFilter.h"
43 class VTK_GRAPHICS_EXPORT vtkInterpolatingSubdivisionFilter : public vtkPolyDataToPolyDataFilter
46 vtkTypeRevisionMacro(vtkInterpolatingSubdivisionFilter,vtkPolyDataToPolyDataFilter);
47 void PrintSelf(ostream& os, vtkIndent indent);
50 // Set/get the number of subdivisions.
51 vtkSetMacro(NumberOfSubdivisions,int);
52 vtkGetMacro(NumberOfSubdivisions,int);
55 vtkInterpolatingSubdivisionFilter();
56 ~vtkInterpolatingSubdivisionFilter() {};
59 virtual void GenerateSubdivisionPoints (vtkPolyData *inputDS, vtkIntArray *edgeData, vtkPoints *outputPts, vtkPointData *outputPD) = 0;
60 void GenerateSubdivisionCells (vtkPolyData *inputDS, vtkIntArray *edgeData, vtkCellArray *outputPolys, vtkCellData *outputCD);
61 int FindEdge (vtkPolyData *mesh, vtkIdType cellId, vtkIdType p1,
62 vtkIdType p2, vtkIntArray *edgeData, vtkIdList *cellIds);
63 vtkIdType InterpolatePosition (vtkPoints *inputPts, vtkPoints *outputPts,
64 vtkIdList *stencil, float *weights);
65 int NumberOfSubdivisions;
68 vtkInterpolatingSubdivisionFilter(const vtkInterpolatingSubdivisionFilter&); // Not implemented.
69 void operator=(const vtkInterpolatingSubdivisionFilter&); // Not implemented.