VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkInterpolatingSubdivisionFilter.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 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&); // Not implemented. 00069 void operator=(const vtkInterpolatingSubdivisionFilter&); // Not implemented. 00070 }; 00071 00072 #endif 00073 00074