VTK
vtkPointDensityFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPointDensityFilter.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 =========================================================================*/
75 #ifndef vtkPointDensityFilter_h
76 #define vtkPointDensityFilter_h
77 
78 #include "vtkFiltersPointsModule.h" // For export macro
79 #include "vtkImageAlgorithm.h"
80 
81 #define VTK_DENSITY_ESTIMATE_FIXED_RADIUS 0
82 #define VTK_DENSITY_ESTIMATE_RELATIVE_RADIUS 1
83 
84 #define VTK_DENSITY_FORM_VOLUME_NORM 0
85 #define VTK_DENSITY_FORM_NPTS 1
86 
88 
89 class VTKFILTERSPOINTS_EXPORT vtkPointDensityFilter : public vtkImageAlgorithm
90 {
91 public:
93 
97  static vtkPointDensityFilter *New();
99  void PrintSelf(ostream& os, vtkIndent indent);
101 
103 
109  void SetSampleDimensions(int i, int j, int k);
110  void SetSampleDimensions(int dim[3]);
111  vtkGetVectorMacro(SampleDimensions,int,3);
113 
115 
121  vtkSetVector6Macro(ModelBounds,double);
122  vtkGetVectorMacro(ModelBounds,double,6);
124 
126 
132  vtkSetClampMacro(AdjustDistance,double,-1.0,1.0);
133  vtkGetMacro(AdjustDistance,double);
135 
137 
142  vtkSetClampMacro(DensityEstimate,int, VTK_DENSITY_ESTIMATE_FIXED_RADIUS,
144  vtkGetMacro(DensityEstimate,int);
146  {this->SetDensityEstimate(VTK_DENSITY_ESTIMATE_FIXED_RADIUS);}
148  {this->SetDensityEstimate(VTK_DENSITY_ESTIMATE_RELATIVE_RADIUS);}
149  const char *GetDensityEstimateAsString();
151 
153 
158  vtkSetClampMacro(DensityForm,int, VTK_DENSITY_FORM_VOLUME_NORM,
160  vtkGetMacro(DensityForm,int);
162  {this->SetDensityForm(VTK_DENSITY_FORM_VOLUME_NORM);}
164  {this->SetDensityForm(VTK_DENSITY_FORM_NPTS);}
165  const char *GetDensityFormAsString();
167 
169 
174  vtkSetClampMacro(Radius,double,0.0,VTK_DOUBLE_MAX);
175  vtkGetMacro(Radius,double);
177 
179 
186  vtkSetClampMacro(RelativeRadius,double,0.0,VTK_DOUBLE_MAX);
187  vtkGetMacro(RelativeRadius,double);
189 
191 
195  vtkSetMacro(ScalarWeighting,bool);
196  vtkGetMacro(ScalarWeighting,bool);
197  vtkBooleanMacro(ScalarWeighting,bool);
199 
201 
206  void SetLocator(vtkAbstractPointLocator *locator);
207  vtkGetObjectMacro(Locator,vtkAbstractPointLocator);
209 
210 protected:
213 
214  int SampleDimensions[3]; // dimensions of volume over which to estimate density
215  double ModelBounds[6]; // bounding box of splatting dimensions
216  double AdjustDistance; // how much to pad the model bounds if automatically computed
217  double Origin[3], Spacing[3]; // output geometry
218  int DensityEstimate; // how to compute the density
219  int DensityForm; // how to represent density value
220  double RelativeRadius; // Radius factor for estimating density
221  double Radius; // Actually radius used
222  bool ScalarWeighting; // Are point densities weighted or not?
223  vtkAbstractPointLocator *Locator; //accelerate point searches
224 
226  virtual int RequestInformation (vtkInformation *,
229  virtual int RequestData(vtkInformation *,
232 
233  void ComputeModelBounds(vtkDataSet *input, vtkImageData *output,
234  vtkInformation *outInfo);
235 
236 private:
237  vtkPointDensityFilter(const vtkPointDensityFilter&) VTK_DELETE_FUNCTION;
238  void operator=(const vtkPointDensityFilter&) VTK_DELETE_FUNCTION;
239 };
240 
241 #endif
#define VTK_DOUBLE_MAX
Definition: vtkType.h:163
Store vtkAlgorithm input/output information.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
#define VTK_DENSITY_FORM_NPTS
#define VTK_DENSITY_ESTIMATE_RELATIVE_RADIUS
void SetDensityEstimateToRelativeRadius()
Specify the method to estimate point density.
a simple class to control print indentation
Definition: vtkIndent.h:39
abstract class to quickly locate points in 3-space
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
Subclasses can reimplement this method to collect information from their inputs and set information f...
void SetDensityFormToVolumeNormalized()
Specify the form by which the density is expressed.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
#define VTK_DENSITY_FORM_VOLUME_NORM
void SetDensityEstimateToFixedRadius()
Specify the method to estimate point density.
void SetDensityFormToNumberOfPoints()
Specify the form by which the density is expressed.
int FillInputPortInformation(int port, vtkInformation *info) override
These method should be reimplemented by subclasses that have more than a single input or single outpu...
Generic algorithm superclass for image algs.
#define VTK_DENSITY_ESTIMATE_FIXED_RADIUS
Store zero or more vtkInformation instances.
static vtkAlgorithm * New()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called in response to a REQUEST_DATA request from the executive.
produce density field from input point cloud
vtkAbstractPointLocator * Locator