00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00059
#ifndef __vtkClipVolume_h
00060
#define __vtkClipVolume_h
00061
00062
#include "vtkStructuredPointsToUnstructuredGridFilter.h"
00063
00064
class vtkCellData;
00065
class vtkDataArray;
00066
class vtkIdList;
00067
class vtkImplicitFunction;
00068
class vtkMergePoints;
00069
class vtkOrderedTriangulator;
00070
class vtkPointData;
00071
class vtkPointLocator;
00072
class vtkPoints;
00073
class vtkUnstructuredGrid;
00074
00075 class VTK_GRAPHICS_EXPORT vtkClipVolume :
public vtkStructuredPointsToUnstructuredGridFilter
00076 {
00077
public:
00078 vtkTypeRevisionMacro(vtkClipVolume,
vtkStructuredPointsToUnstructuredGridFilter);
00079
void PrintSelf(ostream& os,
vtkIndent indent);
00080
00084
static vtkClipVolume *
New();
00085
00087
00090 vtkSetMacro(Value,
float);
00091 vtkGetMacro(Value,
float);
00093
00095
00100 vtkSetMacro(InsideOut,
int);
00101 vtkGetMacro(InsideOut,
int);
00102 vtkBooleanMacro(InsideOut,
int);
00104
00106
00109
virtual void SetClipFunction(
vtkImplicitFunction*);
00110 vtkGetObjectMacro(ClipFunction,
vtkImplicitFunction);
00112
00114
00118 vtkSetMacro(GenerateClipScalars,
int);
00119 vtkGetMacro(GenerateClipScalars,
int);
00120 vtkBooleanMacro(GenerateClipScalars,
int);
00122
00124
00126 vtkSetMacro(GenerateClippedOutput,
int);
00127 vtkGetMacro(GenerateClippedOutput,
int);
00128 vtkBooleanMacro(GenerateClippedOutput,
int);
00130
00132
vtkUnstructuredGrid *GetClippedOutput();
00133
00135
00138 vtkSetClampMacro(MergeTolerance,
float,0.0001,0.25);
00139 vtkGetMacro(MergeTolerance,
float);
00141
00143
00145
void SetLocator(
vtkPointLocator *locator);
00146 vtkGetObjectMacro(Locator,
vtkPointLocator);
00148
00151
void CreateDefaultLocator();
00152
00154
unsigned long int GetMTime();
00155
00156
protected:
00157 vtkClipVolume(
vtkImplicitFunction *cf=NULL);
00158 ~vtkClipVolume();
00159
00160
void Execute();
00161
void ClipVoxel(
float value,
vtkDataArray *cellScalars,
int flip,
00162
float origin[3],
float spacing[3],
vtkIdList *cellIds,
00163
vtkPoints *cellPts,
vtkPointData *inPD,
vtkPointData *outPD,
00164
vtkCellData *inCD,
vtkIdType cellId,
vtkCellData *outCD,
00165
vtkCellData *clippedCD);
00166 vtkImplicitFunction *ClipFunction;
00167 vtkPointLocator *Locator;
00168 int InsideOut;
00169 float Value;
00170 int GenerateClipScalars;
00171 float MergeTolerance;
00172
00173 int GenerateClippedOutput;
00174 vtkUnstructuredGrid *ClippedOutput;
00175
00176
private:
00177
vtkUnstructuredGrid *Mesh;
00178
vtkOrderedTriangulator *Triangulator;
00179
00180
private:
00181 vtkClipVolume(
const vtkClipVolume&);
00182
void operator=(
const vtkClipVolume&);
00183 };
00184
00185
#endif