VTK  9.6.1
vtkHull.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
31
32#ifndef vtkHull_h
33#define vtkHull_h
34
35#include "vtkFiltersCoreModule.h" // For export macro
37#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
38#include <vector> //for storing planes
39
40VTK_ABI_NAMESPACE_BEGIN
41class vtkCellArray;
42class vtkPlanes;
43class vtkPoints;
44class vtkPolyData;
45
46class VTKFILTERSCORE_EXPORT VTK_MARSHALAUTO vtkHull : public vtkPointSetAlgorithm
47{
48public:
50
54 static vtkHull* New();
56 void PrintSelf(ostream& os, vtkIndent indent) override;
58
63
65
76 int AddPlane(double A, double B, double C);
77 int AddPlane(double plane[3]);
79
81
89 void SetPlane(int i, double A, double B, double C);
90 void SetPlane(int i, double plane[3]);
92
94
98 int AddPlane(double A, double B, double C, double D);
99 int AddPlane(double plane[3], double D);
100 void SetPlane(int i, double A, double B, double C, double D);
101 void SetPlane(int i, double plane[3], double D);
103
108 void SetPlanes(vtkPlanes* planes);
109
114
121
129
135
146
148
159 void GenerateHull(vtkPolyData* pd, double* bounds);
161 vtkPolyData* pd, double xmin, double xmax, double ymin, double ymax, double zmin, double zmax);
163
164protected:
165 vtkHull() = default;
166 ~vtkHull() override = default;
167
168 // The planes - 4 doubles per plane for A, B, C, D.
169 std::vector<double> Planes;
170
171 // Internal method used to find the position of each plane
173
174 // Internal method used to create the actual polygons from the set
175 // of planes
176 void ClipPolygonsFromPlanes(vtkPoints* points, vtkCellArray* polys, const double* bounds);
177
178 // Internal method used to create the initial "big" polygon from the
179 // plane equation. This polygon is clipped by all other planes to form
180 // the final polygon (or it may be clipped entirely)
181 void CreateInitialPolygon(double*, int, const double*);
182
183 // The method that does it all...
185
186 // Specify that the output is of type vtkPolyData
187 int FillOutputPortInformation(int port, vtkInformation* info) override;
188
189private:
190 vtkHull(const vtkHull&) = delete;
191 void operator=(const vtkHull&) = delete;
192};
193
194VTK_ABI_NAMESPACE_END
195#endif
object to represent cell connectivity
void AddCubeVertexPlanes()
Add the 8 planes that represent the vertices of a cube - the combination of the three face planes con...
int GetNumberOfPlanes()
Get the number of planes in the current set of planes.
void AddCubeEdgePlanes()
Add the 12 planes that represent the edges of a cube - halfway between the two connecting face planes...
void RemoveAllPlanes()
Remove all planes from the current set of planes.
void ClipPolygonsFromPlanes(vtkPoints *points, vtkCellArray *polys, const double *bounds)
void SetPlane(int i, double plane[3], double D)
Variations of AddPlane()/SetPlane() that allow D to be set.
int FillOutputPortInformation(int port, vtkInformation *info) override
void SetPlane(int i, double plane[3])
Set the normal values for plane i.
int AddPlane(double plane[3], double D)
Variations of AddPlane()/SetPlane() that allow D to be set.
int AddPlane(double plane[3])
Add a plane to the current set of planes.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods to instantiate, obtain type information, and print information about the class.
~vtkHull() override=default
void AddRecursiveSpherePlanes(int level)
Add the planes that represent the normals of the vertices of a polygonal sphere formed by recursively...
void ComputePlaneDistances(vtkPointSet *input)
vtkHull()=default
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
void CreateInitialPolygon(double *, int, const double *)
void GenerateHull(vtkPolyData *pd, double *bounds)
A special method that is used to generate a polyhedron directly from a set of n planes.
void GenerateHull(vtkPolyData *pd, double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
A special method that is used to generate a polyhedron directly from a set of n planes.
int AddPlane(double A, double B, double C)
Add a plane to the current set of planes.
void SetPlane(int i, double A, double B, double C, double D)
Variations of AddPlane()/SetPlane() that allow D to be set.
static vtkHull * New()
Standard methods to instantiate, obtain type information, and print information about the class.
int AddPlane(double A, double B, double C, double D)
Variations of AddPlane()/SetPlane() that allow D to be set.
void AddCubeFacePlanes()
Add the six planes that make up the faces of a cube - (1,0,0), (-1, 0, 0), (0,1,0),...
void SetPlanes(vtkPlanes *planes)
Set all the planes at once using a vtkPlanes implicit function.
std::vector< double > Planes
Definition vtkHull.h:169
void SetPlane(int i, double A, double B, double C)
Set the normal values for plane i.
a simple class to control print indentation
Definition vtkIndent.h:29
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
implicit function for convex set of planes
Definition vtkPlanes.h:42
concrete class for storing a set of points
Definition vtkPointSet.h:59
represent and manipulate 3D points
Definition vtkPoints.h:30
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:72
#define VTK_MARSHALAUTO