Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

Graphics/vtkClipVolume.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkClipVolume.h,v $
00005   Language:  C++
00006 
00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even 
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015 =========================================================================*/
00071 #ifndef __vtkClipVolume_h
00072 #define __vtkClipVolume_h
00073 
00074 #include "vtkStructuredPointsToUnstructuredGridFilter.h"
00075 
00076 class vtkCellData;
00077 class vtkDataArray;
00078 class vtkIdList;
00079 class vtkImplicitFunction;
00080 class vtkMergePoints;
00081 class vtkOrderedTriangulator;
00082 class vtkPointData;
00083 class vtkPointLocator;
00084 class vtkPoints;
00085 class vtkUnstructuredGrid;
00086 
00087 class VTK_GRAPHICS_EXPORT vtkClipVolume : public vtkStructuredPointsToUnstructuredGridFilter
00088 {
00089 public:
00090   vtkTypeRevisionMacro(vtkClipVolume,vtkStructuredPointsToUnstructuredGridFilter);
00091   void PrintSelf(ostream& os, vtkIndent indent);
00092 
00096   static vtkClipVolume *New();
00097 
00099 
00102   vtkSetMacro(Value,float);
00103   vtkGetMacro(Value,float);
00105   
00107 
00112   vtkSetMacro(InsideOut,int);
00113   vtkGetMacro(InsideOut,int);
00114   vtkBooleanMacro(InsideOut,int);
00116 
00118 
00121   virtual void SetClipFunction(vtkImplicitFunction*);
00122   vtkGetObjectMacro(ClipFunction,vtkImplicitFunction);
00124 
00126 
00130   vtkSetMacro(GenerateClipScalars,int);
00131   vtkGetMacro(GenerateClipScalars,int);
00132   vtkBooleanMacro(GenerateClipScalars,int);
00134 
00136 
00138   vtkSetMacro(GenerateClippedOutput,int);
00139   vtkGetMacro(GenerateClippedOutput,int);
00140   vtkBooleanMacro(GenerateClippedOutput,int);
00142 
00144   vtkUnstructuredGrid *GetClippedOutput();
00145 
00147 
00150   vtkSetClampMacro(MergeTolerance,float,0.0001,0.25);
00151   vtkGetMacro(MergeTolerance,float);
00153   
00155 
00157   void SetLocator(vtkPointLocator *locator);
00158   vtkGetObjectMacro(Locator,vtkPointLocator);
00160 
00163   void CreateDefaultLocator();
00164 
00166   unsigned long int GetMTime();
00167 
00168 protected:
00169   vtkClipVolume(vtkImplicitFunction *cf=NULL);
00170   ~vtkClipVolume();
00171 
00172   void Execute();
00173   void ClipVoxel(float value, vtkDataArray *cellScalars, int flip,
00174                  float origin[3], float spacing[3], vtkIdList *cellIds,
00175                  vtkPoints *cellPts, vtkPointData *inPD, vtkPointData *outPD,
00176                  vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD, 
00177                  vtkCellData *clippedCD);
00178   vtkImplicitFunction *ClipFunction;
00179   vtkPointLocator *Locator;
00180   int InsideOut;
00181   float Value;
00182   int GenerateClipScalars;
00183   float MergeTolerance;
00184 
00185   int GenerateClippedOutput;
00186   vtkUnstructuredGrid *ClippedOutput;
00187   
00188 private:
00189   vtkUnstructuredGrid    *Mesh;
00190   vtkOrderedTriangulator *Triangulator;
00191   
00192 private:
00193   vtkClipVolume(const vtkClipVolume&);  // Not implemented.
00194   void operator=(const vtkClipVolume&);  // Not implemented.
00195 };
00196 
00197 #endif