OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / I686LINUX / util / I686LINUX / include / vtk / vtkInterpolatingSubdivisionFilter.h
1 /*=========================================================================
2
3   Program:   Visualization Toolkit
4   Module:    $RCSfile: vtkInterpolatingSubdivisionFilter.h,v $
5   Language:  C++
6   Date:      $Date: 2002/09/03 12:52:23 $
7   Version:   $Revision: 1.16 $
8
9   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
10   All rights reserved.
11   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
12
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.
16
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.
22
23 // .SECTION Thanks
24 // This work was supported by PHS Research Grant No. 1 P41 RR13218-01
25 // from the National Center for Research Resources.
26
27 // .SECTION See Also
28 // vtkLinearSubdivisionFilter vtkButterflySubdivisionFilter
29
30 #ifndef __vtkInterpolatingSubdivisionFilter_h
31 #define __vtkInterpolatingSubdivisionFilter_h
32
33 #include "vtkPolyDataToPolyDataFilter.h"
34
35 class vtkCellArray;
36 class vtkCellData;
37 class vtkIdList;
38 class vtkIntArray;
39 class vtkPointData;
40 class vtkPoints;
41 class vtkPolyData;
42
43 class VTK_GRAPHICS_EXPORT vtkInterpolatingSubdivisionFilter : public vtkPolyDataToPolyDataFilter
44 {
45 public:
46   vtkTypeRevisionMacro(vtkInterpolatingSubdivisionFilter,vtkPolyDataToPolyDataFilter);
47   void PrintSelf(ostream& os, vtkIndent indent);
48
49   // Description:
50   // Set/get the number of subdivisions.
51   vtkSetMacro(NumberOfSubdivisions,int);
52   vtkGetMacro(NumberOfSubdivisions,int);
53
54 protected:
55   vtkInterpolatingSubdivisionFilter();
56   ~vtkInterpolatingSubdivisionFilter() {};
57
58   void Execute();
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;
66
67 private:
68   vtkInterpolatingSubdivisionFilter(const vtkInterpolatingSubdivisionFilter&);  // Not implemented.
69   void operator=(const vtkInterpolatingSubdivisionFilter&);  // Not implemented.
70 };
71
72 #endif
73
74