73 #ifndef vtkGaussianSplatter_h
74 #define vtkGaussianSplatter_h
79 #define VTK_ACCUMULATION_MODE_MIN 0
80 #define VTK_ACCUMULATION_MODE_MAX 1
81 #define VTK_ACCUMULATION_MODE_SUM 2
85 class vtkGaussianSplatterAlgorithm;
101 void SetSampleDimensions(
int i,
int j,
int k);
102 void SetSampleDimensions(
int dim[3]);
103 vtkGetVectorMacro(SampleDimensions,
int,3);
111 vtkSetVector6Macro(ModelBounds,
double);
112 vtkGetVectorMacro(ModelBounds,
double,6);
119 vtkSetClampMacro(Radius,
double,0.0,1.0);
120 vtkGetMacro(Radius,
double);
128 vtkGetMacro(ScaleFactor,
double);
134 vtkSetMacro(ExponentFactor,
double);
135 vtkGetMacro(ExponentFactor,
double);
142 vtkSetMacro(NormalWarping,
int);
143 vtkGetMacro(NormalWarping,
int);
144 vtkBooleanMacro(NormalWarping,
int);
154 vtkGetMacro(Eccentricity,
double);
159 vtkSetMacro(ScalarWarping,
int);
160 vtkGetMacro(ScalarWarping,
int);
161 vtkBooleanMacro(ScalarWarping,
int);
168 vtkSetMacro(Capping,
int);
169 vtkGetMacro(Capping,
int);
170 vtkBooleanMacro(Capping,
int);
176 vtkSetMacro(CapValue,
double);
177 vtkGetMacro(CapValue,
double);
185 vtkSetClampMacro(AccumulationMode,
int,
187 vtkGetMacro(AccumulationMode,
int);
194 const char *GetAccumulationModeAsString();
201 vtkSetMacro(NullValue,
double);
202 vtkGetMacro(NullValue,
double);
219 friend class vtkGaussianSplatterAlgorithm;
221 {
return (this->*Sample)(x);}
224 double v = (this->*SampleFactor)(this->S) * exp(static_cast<double>
225 (this->ExponentFactor*(dist2)/(this->Radius2)));
228 if ( ! this->Visited[idx] )
230 this->Visited[idx] = 1;
235 switch (this->AccumulationMode)
270 int SampleDimensions[3];
273 double ModelBounds[6];
282 double Gaussian(
double x[3]);
283 double EccentricGaussian(
double x[3]);
285 {
return this->ScaleFactor * s;}
287 {
return this->ScaleFactor;}
295 double Eccentricity2;
301 double SplatDistance[3];
void SetAccumulationModeToMin()
abstract class to specify dataset behavior
#define VTK_ACCUMULATION_MODE_MAX
void SetAccumulationModeToMax()
splat points into a volume with an elliptical, Gaussian distribution
dynamic, self-adjusting array of double
abstract superclass for composite (multi-block or AMR) datasets
a simple class to control print indentation
topologically and geometrically regular array of data
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
double PositionSampling(double)
#define VTK_ACCUMULATION_MODE_SUM
virtual int FillInputPortInformation(int port, vtkInformation *info)
void SetAccumulationModeToSum()
#define VTK_ACCUMULATION_MODE_MIN
double SamplePoint(double x[3])
Generic algorithm superclass for image algs.
void SetScalar(int idx, double dist2, double *sPtr)
void PrintSelf(ostream &os, vtkIndent indent)
static vtkAlgorithm * New()
#define VTKIMAGINGHYBRID_EXPORT
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
double ScalarSampling(double s)