VTK  9.2.5
vtkConnectedPointsFilter.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkConnectedPointsFilter.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=========================================================================*/
54#ifndef vtkConnectedPointsFilter_h
55#define vtkConnectedPointsFilter_h
56
57#include "vtkFiltersPointsModule.h" // For export macro
59
60// Make these consistent with the other connectivity filters
61#define VTK_EXTRACT_POINT_SEEDED_REGIONS 1
62#define VTK_EXTRACT_SPECIFIED_REGIONS 3
63#define VTK_EXTRACT_LARGEST_REGION 4
64#define VTK_EXTRACT_ALL_REGIONS 5
65#define VTK_EXTRACT_CLOSEST_POINT_REGION 6
66
68class vtkDataArray;
69class vtkFloatArray;
70class vtkIdList;
71class vtkIdTypeArray;
72class vtkIntArray;
73
74class VTKFILTERSPOINTS_EXPORT vtkConnectedPointsFilter : public vtkPolyDataAlgorithm
75{
76public:
78 void PrintSelf(ostream& os, vtkIndent indent) override;
79
84
86
90 vtkSetClampMacro(Radius, double, 0.0, VTK_DOUBLE_MAX);
91 vtkGetMacro(Radius, double);
93
95
98 vtkSetClampMacro(
100 vtkGetMacro(ExtractionMode, int);
102 {
103 this->SetExtractionMode(VTK_EXTRACT_POINT_SEEDED_REGIONS);
104 }
107 {
108 this->SetExtractionMode(VTK_EXTRACT_SPECIFIED_REGIONS);
109 }
111 {
112 this->SetExtractionMode(VTK_EXTRACT_CLOSEST_POINT_REGION);
113 }
114 void SetExtractionModeToAllRegions() { this->SetExtractionMode(VTK_EXTRACT_ALL_REGIONS); }
115 const char* GetExtractionModeAsString();
117
119
123 vtkSetVector3Macro(ClosestPoint, double);
124 vtkGetVectorMacro(ClosestPoint, double, 3);
126
131
136
141
146
151
156
158
164 vtkSetMacro(AlignedNormals, int);
165 vtkGetMacro(AlignedNormals, int);
166 vtkBooleanMacro(AlignedNormals, int);
168
170
175 vtkSetClampMacro(NormalAngle, double, 0.0001, 90.0);
176 vtkGetMacro(NormalAngle, double);
178
180
185 vtkSetMacro(ScalarConnectivity, int);
186 vtkGetMacro(ScalarConnectivity, int);
187 vtkBooleanMacro(ScalarConnectivity, int);
189
191
194 vtkSetVector2Macro(ScalarRange, double);
195 vtkGetVector2Macro(ScalarRange, double);
197
203
205
211 vtkGetObjectMacro(Locator, vtkAbstractPointLocator);
213
214protected:
217
218 // Usual data generation method
220 int FillInputPortInformation(int port, vtkInformation* info) override;
221
222 // The radius defines the proximal neighborhood of points
223 double Radius;
224
225 // indicate how to extract regions
227
228 // id's of points used to seed regions
230
231 // regions specified for extraction
233
234 // Seed with a closest point
235 double ClosestPoint[3];
236
237 // Segment based on nearly aligned normals
241
242 // Support segmentation based on scalar connectivity
244 double ScalarRange[2];
245
246 // accelerate searching
248
249 // Wave propagation used to segment points
251 vtkPoints* inPts, vtkDataArray* inScalars, float* normals, vtkIdType* labels);
252
253private:
254 // used to support algorithm execution
255 vtkIdType CurrentRegionNumber;
256 vtkIdTypeArray* RegionLabels;
257 vtkIdType NumPointsInRegion;
258 vtkIdTypeArray* RegionSizes;
259 vtkIdList* NeighborPointIds; // avoid repetitive new/delete
260 vtkIdList* Wave;
261 vtkIdList* Wave2;
262
263private:
265 void operator=(const vtkConnectedPointsFilter&) = delete;
266};
267
272{
274 {
275 return "ExtractPointSeededRegions";
276 }
278 {
279 return "ExtractSpecifiedRegions";
280 }
281 else if (this->ExtractionMode == VTK_EXTRACT_ALL_REGIONS)
282 {
283 return "ExtractAllRegions";
284 }
286 {
287 return "ExtractClosestPointRegion";
288 }
289 else
290 {
291 return "ExtractLargestRegion";
292 }
293}
294
295#endif
abstract class to quickly locate points in 3-space
extract / segment points based on geometric connectivity
void SetExtractionModeToClosestPointRegion()
Control the extraction of connected regions.
void TraverseAndMark(vtkPoints *inPts, vtkDataArray *inScalars, float *normals, vtkIdType *labels)
vtkAbstractPointLocator * Locator
void SetExtractionModeToPointSeededRegions()
Control the extraction of connected regions.
void SetLocator(vtkAbstractPointLocator *locator)
Specify a point locator.
static vtkConnectedPointsFilter * New()
Construct with default extraction mode to extract the largest region.
void InitializeSpecifiedRegionList()
Initialize list of region ids to extract.
void DeleteSeed(vtkIdType id)
Delete a point seed id.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void DeleteSpecifiedRegion(vtkIdType id)
Delete a region id to extract.
int GetNumberOfExtractedRegions()
Obtain the number of connected regions.
void SetExtractionModeToSpecifiedRegions()
Control the extraction of connected regions.
~vtkConnectedPointsFilter() override
void AddSpecifiedRegion(vtkIdType id)
Add a non-negative region id to extract.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
void SetExtractionModeToAllRegions()
Control the extraction of connected regions.
void AddSeed(vtkIdType id)
Add a non-negative point seed id.
void SetExtractionModeToLargestRegion()
Control the extraction of connected regions.
const char * GetExtractionModeAsString()
Return the method of extraction as a string.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
void InitializeSeedList()
Initialize list of point ids ids used to seed regions.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:56
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:42
list of point or cell ids
Definition: vtkIdList.h:34
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition: vtkIndent.h:40
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:46
represent and manipulate 3D points
Definition: vtkPoints.h:40
Superclass for algorithms that produce only polydata as output.
#define VTK_EXTRACT_CLOSEST_POINT_REGION
#define VTK_EXTRACT_POINT_SEEDED_REGIONS
#define VTK_EXTRACT_ALL_REGIONS
#define VTK_EXTRACT_SPECIFIED_REGIONS
#define VTK_EXTRACT_CLOSEST_POINT_REGION
#define VTK_EXTRACT_POINT_SEEDED_REGIONS
#define VTK_EXTRACT_ALL_REGIONS
#define VTK_EXTRACT_SPECIFIED_REGIONS
#define VTK_EXTRACT_LARGEST_REGION
int vtkIdType
Definition: vtkType.h:332
#define VTK_DOUBLE_MAX
Definition: vtkType.h:165