VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkExtractPolyDataGeometry.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 =========================================================================*/ 00045 #ifndef vtkExtractPolyDataGeometry_h 00046 #define vtkExtractPolyDataGeometry_h 00047 00048 #include "vtkFiltersExtractionModule.h" // For export macro 00049 #include "vtkPolyDataAlgorithm.h" 00050 00051 class vtkImplicitFunction; 00052 00053 class VTKFILTERSEXTRACTION_EXPORT vtkExtractPolyDataGeometry : public vtkPolyDataAlgorithm 00054 { 00055 public: 00056 vtkTypeMacro(vtkExtractPolyDataGeometry,vtkPolyDataAlgorithm); 00057 void PrintSelf(ostream& os, vtkIndent indent); 00058 00060 static vtkExtractPolyDataGeometry *New(); 00061 00063 unsigned long GetMTime(); 00064 00066 00067 virtual void SetImplicitFunction(vtkImplicitFunction*); 00068 vtkGetObjectMacro(ImplicitFunction,vtkImplicitFunction); 00070 00072 00075 vtkSetMacro(ExtractInside,int); 00076 vtkGetMacro(ExtractInside,int); 00077 vtkBooleanMacro(ExtractInside,int); 00079 00081 00083 vtkSetMacro(ExtractBoundaryCells,int); 00084 vtkGetMacro(ExtractBoundaryCells,int); 00085 vtkBooleanMacro(ExtractBoundaryCells,int); 00087 00089 00091 vtkSetMacro(PassPoints,int); 00092 vtkGetMacro(PassPoints,int); 00093 vtkBooleanMacro(PassPoints,int); 00095 00096 protected: 00097 vtkExtractPolyDataGeometry(vtkImplicitFunction *f=NULL); 00098 ~vtkExtractPolyDataGeometry(); 00099 00100 // Usual data generation method 00101 int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00102 00103 vtkImplicitFunction *ImplicitFunction; 00104 int ExtractInside; 00105 int ExtractBoundaryCells; 00106 int PassPoints; 00107 00108 vtkIdType InsertPointInMap(vtkIdType i, vtkPoints *inPts, vtkPoints *newPts, vtkIdType *pointMap); 00109 00110 private: 00111 vtkExtractPolyDataGeometry(const vtkExtractPolyDataGeometry&); // Not implemented. 00112 void operator=(const vtkExtractPolyDataGeometry&); // Not implemented. 00113 }; 00114 00116 00118 inline vtkIdType vtkExtractPolyDataGeometry::InsertPointInMap(vtkIdType i, vtkPoints *inPts, 00119 vtkPoints *newPts, vtkIdType *pointMap) 00120 { 00121 double x[3]; 00122 inPts->GetPoint(i, x); 00123 pointMap[i] = newPts->InsertNextPoint(x); 00124 return pointMap[i]; 00125 } 00127 00128 00129 #endif