1 /*=========================================================================
2 
3   Program:   Visualization Toolkit
4   Module:    vtkEdgePoints.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 =========================================================================*/
15 /**
16  * @class   vtkEdgePoints
17  * @brief   generate points on isosurface
18  *
19  * vtkEdgePoints is a filter that takes as input any dataset and
20  * generates for output a set of points that lie on an isosurface. The
21  * points are created by interpolation along cells edges whose end-points are
22  * below and above the contour value.
23  * @warning
24  * vtkEdgePoints can be considered a "poor man's" dividing cubes algorithm
25  * (see vtkDividingCubes). Points are generated only on the edges of cells,
26  * not in the interior, and at lower density than dividing cubes. However, it
27  * is more general than dividing cubes since it treats any type of dataset.
28  */
29 
30 #ifndef vtkEdgePoints_h
31 #define vtkEdgePoints_h
32 
33 #include "vtkFiltersGeneralModule.h" // For export macro
34 #include "vtkPolyDataAlgorithm.h"
35 
36 class vtkMergePoints;
37 
38 class VTKFILTERSGENERAL_EXPORT vtkEdgePoints : public vtkPolyDataAlgorithm
39 {
40 public:
41   vtkTypeMacro(vtkEdgePoints, vtkPolyDataAlgorithm);
42   void PrintSelf(ostream& os, vtkIndent indent) override;
43 
44   /**
45    * Construct object with contour value of 0.0.
46    */
47   static vtkEdgePoints* New();
48 
49   ///@{
50   /**
51    * Set/get the contour value.
52    */
53   vtkSetMacro(Value, double);
54   vtkGetMacro(Value, double);
55   ///@}
56 
57 protected:
58   vtkEdgePoints();
59   ~vtkEdgePoints() override;
60 
61   int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
62   int FillInputPortInformation(int port, vtkInformation* info) override;
63 
64   double Value;
65   vtkMergePoints* Locator;
66 
67 private:
68   vtkEdgePoints(const vtkEdgePoints&) = delete;
69   void operator=(const vtkEdgePoints&) = delete;
70 };
71 
72 #endif
73