00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00082 #ifndef __vtkClipVolume_h
00083 #define __vtkClipVolume_h
00084 
00085 #include "vtkStructuredPointsToUnstructuredGridFilter.h"
00086 #include "vtkImplicitFunction.h"
00087 
00088 class vtkMergePoints;
00089 class vtkDelaunay3D;
00090 
00091 class VTK_EXPORT vtkClipVolume : public vtkStructuredPointsToUnstructuredGridFilter
00092 {
00093 public:
00094   vtkTypeMacro(vtkClipVolume,vtkStructuredPointsToUnstructuredGridFilter);
00095   void PrintSelf(ostream& os, vtkIndent indent);
00096 
00100   static vtkClipVolume *New();
00101 
00105   vtkSetMacro(Value,float);
00106   vtkGetMacro(Value,float);
00107   
00113   vtkSetMacro(InsideOut,int);
00114   vtkGetMacro(InsideOut,int);
00115   vtkBooleanMacro(InsideOut,int);
00116 
00120   vtkSetObjectMacro(ClipFunction,vtkImplicitFunction);
00121   vtkGetObjectMacro(ClipFunction,vtkImplicitFunction);
00122 
00127   vtkSetMacro(GenerateClipScalars,int);
00128   vtkGetMacro(GenerateClipScalars,int);
00129   vtkBooleanMacro(GenerateClipScalars,int);
00130 
00133   vtkSetMacro(GenerateClippedOutput,int);
00134   vtkGetMacro(GenerateClippedOutput,int);
00135   vtkBooleanMacro(GenerateClippedOutput,int);
00136 
00138   vtkUnstructuredGrid *GetClippedOutput();
00139 
00143   vtkSetClampMacro(MergeTolerance,float,0.0001,0.25);
00144   vtkGetMacro(MergeTolerance,float);
00145   
00148   void SetLocator(vtkPointLocator *locator);
00149   vtkGetObjectMacro(Locator,vtkPointLocator);
00150 
00153   void CreateDefaultLocator();
00154 
00156   unsigned long int GetMTime();
00157 
00158 #ifndef VTK_REMOVE_LEGACY_CODE
00159 
00160   void SetLocator(vtkPointLocator& locator) 
00161     {VTK_LEGACY_METHOD(SetLocator,"3.2"); this->SetLocator(&locator);}
00162 #endif
00163   
00164 protected:
00165   vtkClipVolume(vtkImplicitFunction *cf=NULL);
00166   ~vtkClipVolume();
00167   vtkClipVolume(const vtkClipVolume&) {};
00168   void operator=(const vtkClipVolume&) {};
00169 
00170   void Execute();
00171   void ClipVoxel(float value, vtkScalars *cellScalars, int flip,
00172                  float origin[3], float spacing[3], vtkIdList *cellIds,
00173        vtkPoints *cellPts, vtkPointData *inPD, vtkPointData *outPD,
00174        vtkCellData *inCD, int cellId, vtkCellData *outCD, 
00175        vtkCellData *clippedCD);
00176   vtkImplicitFunction *ClipFunction;
00177   vtkPointLocator *Locator;
00178   int InsideOut;
00179   float Value;
00180   int GenerateClipScalars;
00181   float MergeTolerance;
00182 
00183   int GenerateClippedOutput;
00184   vtkUnstructuredGrid *ClippedOutput;
00185   
00186 private:
00187   vtkUnstructuredGrid *Mesh;
00188   vtkMergePoints *MeshLocator;
00189   vtkDelaunay3D *Triangulator;
00190   
00191 };
00192 
00193 #endif