VTK  9.2.6
vtkPointSmoothingFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPointSmoothingFilter.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 =========================================================================*/
98 #ifndef vtkPointSmoothingFilter_h
99 #define vtkPointSmoothingFilter_h
100 
101 #include "vtkFiltersPointsModule.h" // For export macro
102 #include "vtkPointSetAlgorithm.h"
103 
105 class vtkDataArray;
106 class vtkPlane;
107 
108 class VTKFILTERSPOINTS_EXPORT vtkPointSmoothingFilter : public vtkPointSetAlgorithm
109 {
110 public:
112 
116  static vtkPointSmoothingFilter* New();
118  void PrintSelf(ostream& os, vtkIndent indent) override;
120 
122 
126  vtkSetClampMacro(NeighborhoodSize, int, 4, 128);
127  vtkGetMacro(NeighborhoodSize, int);
129 
133  enum
134  {
135  DEFAULT_SMOOTHING = 0,
140  FRAME_FIELD_SMOOTHING
141  };
142 
144 
154  vtkSetClampMacro(SmoothingMode, int, DEFAULT_SMOOTHING, FRAME_FIELD_SMOOTHING);
155  vtkGetMacro(SmoothingMode, int);
156  void SetSmoothingModeToDefault() { this->SetSmoothingMode(DEFAULT_SMOOTHING); }
157  void SetSmoothingModeToGeometric() { this->SetSmoothingMode(GEOMETRIC_SMOOTHING); }
158  void SetSmoothingModeToUniform() { this->SetSmoothingMode(UNIFORM_SMOOTHING); }
159  void SetSmoothingModeToScalars() { this->SetSmoothingMode(SCALAR_SMOOTHING); }
160  void SetSmoothingModeToTensors() { this->SetSmoothingMode(TENSOR_SMOOTHING); }
161  void SetSmoothingModeToFrameField() { this->SetSmoothingMode(FRAME_FIELD_SMOOTHING); }
163 
165 
169  virtual void SetFrameFieldArray(vtkDataArray*);
170  vtkGetObjectMacro(FrameFieldArray, vtkDataArray);
172 
174 
177  vtkSetClampMacro(NumberOfIterations, int, 0, VTK_INT_MAX);
178  vtkGetMacro(NumberOfIterations, int);
180 
182 
186  vtkSetClampMacro(NumberOfSubIterations, int, 1, VTK_INT_MAX);
187  vtkGetMacro(NumberOfSubIterations, int);
189 
191 
199  vtkSetClampMacro(MaximumStepSize, double, 0.0, VTK_DOUBLE_MAX);
200  vtkGetMacro(MaximumStepSize, double);
202 
204 
208  vtkSetClampMacro(Convergence, double, 0.0, 1.0);
209  vtkGetMacro(Convergence, double);
211 
213 
225  vtkSetMacro(EnableConstraints, bool);
226  vtkGetMacro(EnableConstraints, bool);
227  vtkBooleanMacro(EnableConstraints, bool);
228  vtkSetClampMacro(FixedAngle, double, 0, 90);
229  vtkGetMacro(FixedAngle, double);
230  vtkSetClampMacro(BoundaryAngle, double, 0, 120);
231  vtkGetMacro(BoundaryAngle, double);
233 
235 
239  vtkSetMacro(GenerateConstraintScalars, bool);
240  vtkGetMacro(GenerateConstraintScalars, bool);
241  vtkBooleanMacro(GenerateConstraintScalars, bool);
243 
245 
249  vtkSetMacro(GenerateConstraintNormals, bool);
250  vtkGetMacro(GenerateConstraintNormals, bool);
251  vtkBooleanMacro(GenerateConstraintNormals, bool);
253 
255 
261  vtkSetMacro(ComputePackingRadius, bool);
262  vtkGetMacro(ComputePackingRadius, bool);
263  vtkBooleanMacro(ComputePackingRadius, bool);
265 
267 
277  vtkSetClampMacro(PackingRadius, double, 0.0, VTK_DOUBLE_MAX);
278  vtkGetMacro(PackingRadius, double);
280 
282 
291  vtkSetClampMacro(PackingFactor, double, 0.1, 10.0);
292  vtkGetMacro(PackingFactor, double);
294 
296 
303  vtkSetClampMacro(AttractionFactor, double, 0.1, 10.0);
304  vtkGetMacro(AttractionFactor, double);
306 
310  enum
311  {
312  UNCONSTRAINED_MOTION = 0,
313  PLANE_MOTION
314  };
315 
317 
322  vtkSetMacro(MotionConstraint, int);
323  vtkGetMacro(MotionConstraint, int);
324  void SetMotionConstraintToUnconstrained() { this->SetMotionConstraint(UNCONSTRAINED_MOTION); }
325  void SetMotionConstraintToPlane() { this->SetMotionConstraint(PLANE_MOTION); }
327 
329 
333  void SetPlane(vtkPlane*);
334  vtkGetObjectMacro(Plane, vtkPlane);
336 
338 
343  void SetLocator(vtkAbstractPointLocator* locator);
344  vtkGetObjectMacro(Locator, vtkAbstractPointLocator);
346 
347 protected:
349  ~vtkPointSmoothingFilter() override;
350 
351  // Control the smoothing
357  double Convergence;
359 
360  // Support the algorithm
362 
363  // Constraints
365  double FixedAngle;
369 
370  // Packing radius and related
375 
376  // Motion constraints
379 
380  // Pipeline support
382  int FillInputPortInformation(int port, vtkInformation* info) override;
383 
384 private:
386  void operator=(const vtkPointSmoothingFilter&) = delete;
387 };
388 
389 #endif
void SetSmoothingModeToUniform()
Control how smoothing is to be performed.
#define VTK_DOUBLE_MAX
Definition: vtkType.h:165
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Store vtkAlgorithm input/output information.
#define VTK_INT_MAX
Definition: vtkType.h:155
void SetSmoothingModeToDefault()
Control how smoothing is to be performed.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetSmoothingModeToScalars()
Control how smoothing is to be performed.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
void SetMotionConstraintToUnconstrained()
Specify how to constrain the motion of points.
void SetSmoothingModeToGeometric()
Control how smoothing is to be performed.
a simple class to control print indentation
Definition: vtkIndent.h:39
void SetSmoothingModeToTensors()
Control how smoothing is to be performed.
abstract class to quickly locate points in 3-space
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:55
Superclass for algorithms that produce output of the same type as input.
perform various plane computations
Definition: vtkPlane.h:36
adjust point positions to form a pleasing, packed arrangement
static vtkPointSetAlgorithm * New()
Store zero or more vtkInformation instances.
void SetMotionConstraintToPlane()
Specify how to constrain the motion of points.
void SetSmoothingModeToFrameField()
Control how smoothing is to be performed.
vtkAbstractPointLocator * Locator