VTK  9.2.6
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
dynamic, self-adjusting array of float
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