VTK  9.2.6
vtkConvexHull2D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkConvexHull2D.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 
51 #ifndef vtkConvexHull2D_h
52 #define vtkConvexHull2D_h
53 
54 #include "vtkPolyDataAlgorithm.h"
55 #include "vtkRenderingAnnotationModule.h" // For export macro
56 #include "vtkSmartPointer.h" // needed for ivars
57 
58 class vtkCoordinate;
59 class vtkPoints;
60 class vtkPolygon;
61 class vtkPolyLine;
62 class vtkRenderer;
63 class vtkTransform;
65 
66 class VTKRENDERINGANNOTATION_EXPORT vtkConvexHull2D : public vtkPolyDataAlgorithm
67 {
68 public:
69  static vtkConvexHull2D* New();
71  void PrintSelf(ostream& os, vtkIndent indent) override;
72 
74 
77  vtkGetMacro(ScaleFactor, double);
78  vtkSetMacro(ScaleFactor, double);
80 
82 
85  vtkGetMacro(Outline, bool);
86  vtkSetMacro(Outline, bool);
87  vtkBooleanMacro(Outline, bool);
89 
91  {
92  BoundingRectangle = 0,
93  ConvexHull
94  };
95 
97 
100  vtkGetMacro(HullShape, int);
101  vtkSetClampMacro(HullShape, int, 0, 1);
103 
105 
109  vtkSetClampMacro(MinHullSizeInWorld, double, 0.0, VTK_DOUBLE_MAX);
110  vtkGetMacro(MinHullSizeInWorld, double);
112 
114 
118  vtkSetClampMacro(MinHullSizeInDisplay, int, 0, VTK_INT_MAX);
119  vtkGetMacro(MinHullSizeInDisplay, int);
121 
123 
126  void SetRenderer(vtkRenderer* renderer);
127  vtkRenderer* GetRenderer();
129 
133  vtkMTimeType GetMTime() override;
134 
136 
139  static void CalculateBoundingRectangle(
140  vtkPoints* inPoints, vtkPoints* outPoints, double minimumHullSize = 1.0);
141  static void CalculateConvexHull(
142  vtkPoints* inPoints, vtkPoints* outPoints, double minimumHullSize = 1.0);
144 
145 protected:
146  vtkConvexHull2D();
147  ~vtkConvexHull2D() override;
148 
153 
154 private:
155  vtkConvexHull2D(const vtkConvexHull2D&) = delete;
156  void operator=(const vtkConvexHull2D&) = delete;
157 
158  void ResizeHullToMinimumInDisplay(vtkPolyData* hullPolyData);
159 
160  double ScaleFactor;
161  bool Outline;
162  int HullShape;
163  int MinHullSizeInDisplay;
164  double MinHullSizeInWorld;
165  vtkRenderer* Renderer;
166 
169  vtkSmartPointer<vtkTransform> OutputTransform;
170  vtkSmartPointer<vtkTransformPolyDataFilter> OutputTransformFilter;
171  vtkSmartPointer<vtkPolyLine> OutlineSource;
172  vtkSmartPointer<vtkPolygon> HullSource;
173 };
174 
175 #endif // vtkConvexHull2D_h
#define VTK_DOUBLE_MAX
Definition: vtkType.h:165
Store vtkAlgorithm input/output information.
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called by the superclass.
#define VTK_INT_MAX
Definition: vtkType.h:155
abstract specification for renderers
Definition: vtkRenderer.h:72
transform points and associated normals and vectors for polygonal dataset
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:60
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:90
static vtkPolyDataAlgorithm * New()
Superclass for algorithms that produce only polydata as output.
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual vtkMTimeType GetMTime()
Return this object's modified time.
a cell that represents an n-sided polygon
Definition: vtkPolygon.h:42
perform coordinate transformation, and represent position, in a variety of vtk coordinate systems ...
Definition: vtkCoordinate.h:79
Store zero or more vtkInformation instances.
Produce filled convex hulls around a set of points.
represent and manipulate 3D points
Definition: vtkPoints.h:39
cell represents a set of 1D lines
Definition: vtkPolyLine.h:39
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.