73 #ifndef vtkGaussianSplatter_h
74 #define vtkGaussianSplatter_h
76 #include "vtkImagingHybridModule.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;
105 void SetSampleDimensions(
int i,
int j,
int k);
106 void SetSampleDimensions(
int dim[3]);
107 vtkGetVectorMacro(SampleDimensions,
int,3);
117 vtkSetVector6Macro(ModelBounds,
double);
118 vtkGetVectorMacro(ModelBounds,
double,6);
127 vtkSetClampMacro(Radius,
double,0.0,1.0);
128 vtkGetMacro(Radius,
double);
138 vtkGetMacro(ScaleFactor,
double);
147 vtkSetMacro(ExponentFactor,
double);
148 vtkGetMacro(ExponentFactor,
double);
171 vtkGetMacro(Eccentricity,
double);
199 vtkSetMacro(CapValue,
double);
200 vtkGetMacro(CapValue,
double);
210 vtkSetClampMacro(AccumulationMode,
int,
212 vtkGetMacro(AccumulationMode,
int);
219 const char *GetAccumulationModeAsString();
227 vtkSetMacro(NullValue,
double);
228 vtkGetMacro(NullValue,
double);
248 friend class vtkGaussianSplatterAlgorithm;
250 {
return (this->*Sample)(x);}
253 double v = (this->*SampleFactor)(this->S) * exp(static_cast<double>
254 (this->ExponentFactor*(dist2)/(this->Radius2)));
257 if ( ! this->Visited[idx] )
259 this->Visited[idx] = 1;
264 switch (this->AccumulationMode)
298 int SampleDimensions[3];
301 double ModelBounds[6];
310 double Gaussian(
double x[3]);
311 double EccentricGaussian(
double x[3]);
313 {
return this->ScaleFactor * s;}
315 {
return this->ScaleFactor;}
322 double Eccentricity2;
328 double SplatDistance[3];