00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00081
#ifndef __vtkImplicitModeller_h
00082
#define __vtkImplicitModeller_h
00083
00084
#include "vtkDataSetToImageFilter.h"
00085
00086 #define VTK_VOXEL_MODE 0
00087 #define VTK_CELL_MODE 1
00088
00089
class vtkDataArray;
00090
class vtkExtractGeometry;
00091
class vtkMultiThreader;
00092
00093 class VTK_HYBRID_EXPORT vtkImplicitModeller :
public vtkDataSetToImageFilter
00094 {
00095
public:
00096 vtkTypeRevisionMacro(vtkImplicitModeller,
vtkDataSetToImageFilter);
00097
void PrintSelf(ostream& os,
vtkIndent indent);
00098
00102
static vtkImplicitModeller *
New();
00103
00106
float ComputeModelBounds(
vtkDataSet *input = NULL);
00107
00109
00110 vtkGetVectorMacro(SampleDimensions,
int,3);
00111
void SetSampleDimensions(
int i,
int j,
int k);
00112
void SetSampleDimensions(
int dim[3]);
00114
00116
00118 vtkSetClampMacro(MaximumDistance,
float,0.0,1.0);
00119 vtkGetMacro(MaximumDistance,
float);
00121
00123
00125 vtkSetVector6Macro(ModelBounds,
float);
00126 vtkGetVectorMacro(ModelBounds,
float,6);
00128
00130
00134 vtkSetMacro(AdjustBounds,
int);
00135 vtkGetMacro(AdjustBounds,
int);
00136 vtkBooleanMacro(AdjustBounds,
int);
00138
00140
00143 vtkSetClampMacro(AdjustDistance,
float,-1.0,1.0);
00144 vtkGetMacro(AdjustDistance,
float);
00146
00148
00150 vtkSetMacro(Capping,
int);
00151 vtkGetMacro(Capping,
int);
00152 vtkBooleanMacro(Capping,
int);
00154
00156
00158 vtkSetMacro(CapValue,
float);
00159 vtkGetMacro(CapValue,
float);
00161
00163
00168 vtkSetClampMacro(ProcessMode,
int, 0, 1);
00169 vtkGetMacro(ProcessMode,
int);
00170 void SetProcessModeToPerVoxel() {this->SetProcessMode(
VTK_VOXEL_MODE);}
00171 void SetProcessModeToPerCell() {this->SetProcessMode(
VTK_CELL_MODE);}
00172
const char *GetProcessModeAsString(
void);
00174
00176
00178 vtkSetMacro(LocatorMaxLevel,
int);
00179 vtkGetMacro(LocatorMaxLevel,
int);
00181
00183
00184 vtkSetClampMacro( NumberOfThreads,
int, 1, VTK_MAX_THREADS );
00185 vtkGetMacro( NumberOfThreads,
int );
00187
00192
void StartAppend();
00193
00199
void Append(
vtkDataSet *input);
00200
00202
void EndAppend();
00203
00204
virtual void UpdateData(
vtkDataObject *output);
00205
00206
protected:
00207 vtkImplicitModeller();
00208 ~vtkImplicitModeller();
00209
00210
void ExecuteData(
vtkDataObject *);
00211
void ExecuteInformation();
00212
00213
void Cap(
vtkDataArray *s);
00214
00215 vtkMultiThreader *Threader;
00216 int NumberOfThreads;
00217
00218 int SampleDimensions[3];
00219 float MaximumDistance;
00220 float ModelBounds[6];
00221 int Capping;
00222 float CapValue;
00223 int DataAppended;
00224 int AdjustBounds;
00225 float AdjustDistance;
00226 int ProcessMode;
00227 int LocatorMaxLevel;
00228
00229 int BoundsComputed;
00230 float InternalMaxDistance;
00231
private:
00232 vtkImplicitModeller(
const vtkImplicitModeller&);
00233
void operator=(
const vtkImplicitModeller&);
00234 };
00235
00236
#endif
00237
00238