00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00077
#ifndef __vtkImplicitModeller_h
00078
#define __vtkImplicitModeller_h
00079
00080
#include "vtkDataSetToImageFilter.h"
00081
00082 #define VTK_VOXEL_MODE 0
00083 #define VTK_CELL_MODE 1
00084
00085
class vtkDataArray;
00086
class vtkExtractGeometry;
00087
class vtkMultiThreader;
00088
00089 class VTK_HYBRID_EXPORT vtkImplicitModeller :
public vtkDataSetToImageFilter
00090 {
00091
public:
00092 vtkTypeRevisionMacro(vtkImplicitModeller,
vtkDataSetToImageFilter);
00093
void PrintSelf(ostream& os,
vtkIndent indent);
00094
00098
static vtkImplicitModeller *
New();
00099
00102
double ComputeModelBounds(
vtkDataSet *input = NULL);
00103
00105
00106 vtkGetVectorMacro(SampleDimensions,
int,3);
00107
void SetSampleDimensions(
int i,
int j,
int k);
00108
void SetSampleDimensions(
int dim[3]);
00110
00112
00114 vtkSetClampMacro(MaximumDistance,
double,0.0,1.0);
00115 vtkGetMacro(MaximumDistance,
double);
00117
00119
00121 vtkSetVector6Macro(ModelBounds,
double);
00122 vtkGetVectorMacro(ModelBounds,
double,6);
00124
00126
00130 vtkSetMacro(AdjustBounds,
int);
00131 vtkGetMacro(AdjustBounds,
int);
00132 vtkBooleanMacro(AdjustBounds,
int);
00134
00136
00139 vtkSetClampMacro(AdjustDistance,
double,-1.0,1.0);
00140 vtkGetMacro(AdjustDistance,
double);
00142
00144
00146 vtkSetMacro(Capping,
int);
00147 vtkGetMacro(Capping,
int);
00148 vtkBooleanMacro(Capping,
int);
00150
00152
00154 vtkSetMacro(CapValue,
double);
00155 vtkGetMacro(CapValue,
double);
00157
00159
00164 vtkSetClampMacro(ProcessMode,
int, 0, 1);
00165 vtkGetMacro(ProcessMode,
int);
00166 void SetProcessModeToPerVoxel() {this->SetProcessMode(
VTK_VOXEL_MODE);}
00167 void SetProcessModeToPerCell() {this->SetProcessMode(
VTK_CELL_MODE);}
00168
const char *GetProcessModeAsString(
void);
00170
00172
00174 vtkSetMacro(LocatorMaxLevel,
int);
00175 vtkGetMacro(LocatorMaxLevel,
int);
00177
00179
00180 vtkSetClampMacro( NumberOfThreads,
int, 1, VTK_MAX_THREADS );
00181 vtkGetMacro( NumberOfThreads,
int );
00183
00188
void StartAppend();
00189
00195
void Append(
vtkDataSet *input);
00196
00198
void EndAppend();
00199
00200
virtual void UpdateData(
vtkDataObject *output);
00201
00202
protected:
00203 vtkImplicitModeller();
00204 ~vtkImplicitModeller();
00205
00206
void ExecuteData(
vtkDataObject *);
00207
void ExecuteInformation();
00208
00209
void Cap(
vtkDataArray *s);
00210
00211 vtkMultiThreader *Threader;
00212 int NumberOfThreads;
00213
00214 int SampleDimensions[3];
00215 double MaximumDistance;
00216 double ModelBounds[6];
00217 int Capping;
00218 double CapValue;
00219 int DataAppended;
00220 int AdjustBounds;
00221 double AdjustDistance;
00222 int ProcessMode;
00223 int LocatorMaxLevel;
00224
00225 int BoundsComputed;
00226 double InternalMaxDistance;
00227
private:
00228 vtkImplicitModeller(
const vtkImplicitModeller&);
00229
void operator=(
const vtkImplicitModeller&);
00230 };
00231
00232
#endif
00233
00234