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