VTK  9.3.20240423
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
61#ifndef vtkHull_h
62#define vtkHull_h
63
64#include "vtkFiltersCoreModule.h" // For export macro
66#include <vector> //for storing planes
67
68VTK_ABI_NAMESPACE_BEGIN
69class vtkCellArray;
70class vtkPlanes;
71class vtkPoints;
72class vtkPolyData;
73
74class VTKFILTERSCORE_EXPORT vtkHull : public vtkPointSetAlgorithm
75{
76public:
78
82 static vtkHull* New();
84 void PrintSelf(ostream& os, vtkIndent indent) override;
86
91
93
104 int AddPlane(double A, double B, double C);
105 int AddPlane(double plane[3]);
107
109
117 void SetPlane(int i, double A, double B, double C);
118 void SetPlane(int i, double plane[3]);
120
122
126 int AddPlane(double A, double B, double C, double D);
127 int AddPlane(double plane[3], double D);
128 void SetPlane(int i, double A, double B, double C, double D);
129 void SetPlane(int i, double plane[3], double D);
131
136 void SetPlanes(vtkPlanes* planes);
137
142
149
157
163
174
176
187 void GenerateHull(vtkPolyData* pd, double* bounds);
189 vtkPolyData* pd, double xmin, double xmax, double ymin, double ymax, double zmin, double zmax);
191
192protected:
193 vtkHull() = default;
194 ~vtkHull() override = default;
195
196 // The planes - 4 doubles per plane for A, B, C, D.
197 std::vector<double> Planes;
198
199 // Internal method used to find the position of each plane
201
202 // Internal method used to create the actual polygons from the set
203 // of planes
204 void ClipPolygonsFromPlanes(vtkPoints* points, vtkCellArray* polys, const double* bounds);
205
206 // Internal method used to create the initial "big" polygon from the
207 // plane equation. This polygon is clipped by all other planes to form
208 // the final polygon (or it may be clipped entirely)
209 void CreateInitialPolygon(double*, int, const double*);
210
211 // The method that does it all...
213
214 // Specify that the output is of type vtkPolyData
215 int FillOutputPortInformation(int port, vtkInformation* info) override;
216
217private:
218 vtkHull(const vtkHull&) = delete;
219 void operator=(const vtkHull&) = delete;
220};
221
222VTK_ABI_NAMESPACE_END
223#endif
object to represent cell connectivity
produce an n-sided convex hull
Definition vtkHull.h:75
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
Fill the output port information objects for this algorithm.
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:197
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:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
implicit function for convex set of planes
Definition vtkPlanes.h:151
Superclass for algorithms that produce output of the same type as input.
concrete class for storing a set of points
Definition vtkPointSet.h:98
represent and manipulate 3D points
Definition vtkPoints.h:139
concrete dataset represents vertices, lines, polygons, and triangle strips