VTK
vtkEllipsoidalGaussianKernel.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkEllipsoidalGaussianKernel.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
47 #ifndef vtkEllipsoidalGaussianKernel_h
48 #define vtkEllipsoidalGaussianKernel_h
49 
50 #include "vtkFiltersPointsModule.h" // For export macro
51 #include "vtkGeneralizedKernel.h"
52 #include "vtkStdString.h" // For vtkStdString ivars
53 
54 class vtkIdList;
55 class vtkDataArray;
56 class vtkDoubleArray;
57 
58 
59 class VTKFILTERSPOINTS_EXPORT vtkEllipsoidalGaussianKernel : public vtkGeneralizedKernel
60 {
61 public:
63 
68  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
70 
76  vtkPointData *pd) VTK_OVERRIDE;
77 
78  // Re-use any superclass signatures that we don't override.
80 
95  vtkIdType ComputeWeights(double x[3], vtkIdList *pIds,
96  vtkDoubleArray *prob, vtkDoubleArray *weights) VTK_OVERRIDE;
97 
99 
103  vtkSetMacro(UseNormals,bool);
104  vtkGetMacro(UseNormals,bool);
105  vtkBooleanMacro(UseNormals,bool);
107 
109 
115  vtkSetMacro(NormalsArrayName,vtkStdString);
116  vtkGetMacro(NormalsArrayName,vtkStdString);
118 
120 
124  vtkSetMacro(UseScalars,bool);
125  vtkGetMacro(UseScalars,bool);
126  vtkBooleanMacro(UseScalars,bool);
128 
130 
136  vtkSetMacro(ScalarsArrayName,vtkStdString);
137  vtkGetMacro(ScalarsArrayName,vtkStdString);
139 
141 
146  vtkSetClampMacro(ScaleFactor,double,0.0,VTK_DOUBLE_MAX);
147  vtkGetMacro(ScaleFactor,double);
149 
151 
156  vtkSetClampMacro(Sharpness,double,1,VTK_FLOAT_MAX);
157  vtkGetMacro(Sharpness,double);
159 
161 
167  vtkSetClampMacro(Eccentricity,double,0.000001,VTK_FLOAT_MAX);
168  vtkGetMacro(Eccentricity,double);
170 
171 protected:
173  ~vtkEllipsoidalGaussianKernel() VTK_OVERRIDE;
174 
175  bool UseNormals;
176  bool UseScalars;
177 
178  vtkStdString NormalsArrayName;
179  vtkStdString ScalarsArrayName;
180 
181  double ScaleFactor;
182  double Sharpness;
183  double Eccentricity;
184 
185  // Internal structure to reduce computation
186  double F2, E2;
187  vtkDataArray *NormalsArray;
188  vtkDataArray *ScalarsArray;
189 
190  void FreeStructures() VTK_OVERRIDE;
191 
192 private:
194  void operator=(const vtkEllipsoidalGaussianKernel&) VTK_DELETE_FUNCTION;
195 };
196 
197 #endif
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:41
flexible, general interpolation kernels
represent and manipulate point attribute data
Definition: vtkPointData.h:31
#define VTK_DOUBLE_MAX
Definition: vtkType.h:167
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
int vtkIdType
Definition: vtkType.h:345
dynamic, self-adjusting array of double
#define VTK_FLOAT_MAX
Definition: vtkType.h:165
a simple class to control print indentation
Definition: vtkIndent.h:33
abstract class to quickly locate points in 3-space
list of point or cell ids
Definition: vtkIdList.h:30
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:48
an ellipsoidal Gaussian interpolation kernel
virtual vtkIdType ComputeWeights(double x[3], vtkIdList *pIds, vtkDoubleArray *prob, vtkDoubleArray *weights)=0
Given a point x, a list of basis points pIds, and a probability weighting function prob...
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for type and printing.
virtual void Initialize(vtkAbstractPointLocator *loc, vtkDataSet *ds, vtkPointData *pd)
Initialize the kernel.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...