73 #ifndef vtkGaussianSplatter_h
74 #define vtkGaussianSplatter_h
77 #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);
211 vtkGetMacro(AccumulationMode,
int);
215 const char* GetAccumulationModeAsString();
223 vtkSetMacro(NullValue,
double);
224 vtkGetMacro(NullValue,
double);
233 void ComputeModelBounds(
243 friend class vtkGaussianSplatterAlgorithm;
246 return (this->*Sample)(x);
250 double v = (this->*SampleFactor)(this->S) *
251 exp(
static_cast<double>(this->ExponentFactor * (dist2) / (this->Radius2)));
254 if (!this->Visited[idx])
256 this->Visited[idx] = 1;
261 switch (this->AccumulationMode)
291 int SampleDimensions[3];
294 double ModelBounds[6];
303 double Gaussian(
double x[3]);
304 double EccentricGaussian(
double x[3]);
313 double Eccentricity2;
319 double SplatDistance[3];