VTK  9.5.20251123
vtkOverlappingCellsDetector.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
37
38#ifndef vtkOverlappingCellsDetector_h
39#define vtkOverlappingCellsDetector_h
40
41#include "vtkFiltersParallelDIY2Module.h" // for export macros
43
44#include "vtkBoundingBox.h" // For DetectOverlappingCells
45
46#include <set> // For DetectOverlappingCells
47#include <unordered_map> // For DetectOverlappingCells
48#include <vector> // For DetectOverlappingCells
49
50VTK_ABI_NAMESPACE_BEGIN
51class vtkDataSet;
53class vtkPointSet;
54
55class VTKFILTERSPARALLELDIY2_EXPORT vtkOverlappingCellsDetector : public vtkPassInputTypeAlgorithm
56{
57public:
60 void PrintSelf(ostream& os, vtkIndent indent) override;
61
63
70
72
75 vtkGetMacro(Tolerance, double);
76 vtkSetMacro(Tolerance, double);
78
80
87
88protected:
91
92 int FillInputPortInformation(int port, vtkInformation* info) override;
93
95
99 int ExposeOverlappingCellsAmongBlocks(std::vector<vtkPointSet*>& outputs);
100
124 bool DetectOverlappingCells(vtkDataSet* queryCellDataSet, vtkPointSet* queryPointCloud,
125 const std::vector<vtkBoundingBox>& queryCellBoundingBoxes, vtkDataSet* cellDataSet,
126 vtkPointSet* pointCloud, const std::vector<vtkBoundingBox>& cellBoundingBoxes,
127 std::unordered_map<vtkIdType, std::set<vtkIdType>>& collisionListMap,
128 bool updateProgress = false);
129
134
139
149 double Tolerance;
150
151private:
153 void operator=(const vtkOverlappingCellsDetector&) = delete;
154};
155
156VTK_ABI_NAMESPACE_END
157#endif
abstract class to specify dataset behavior
Definition vtkDataSet.h:166
a simple class to control print indentation
Definition vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Multiprocessing communication superclass.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
~vtkOverlappingCellsDetector() override
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
double Tolerance
Tolerance for overlap detections.
int ExposeOverlappingCellsAmongBlocks(std::vector< vtkPointSet * > &outputs)
Main pipeline.
static vtkOverlappingCellsDetector * New()
vtkMultiProcessController * Controller
Local controller.
void SetController(vtkMultiProcessController *)
Get/Set the controller to use.
bool DetectOverlappingCells(vtkDataSet *queryCellDataSet, vtkPointSet *queryPointCloud, const std::vector< vtkBoundingBox > &queryCellBoundingBoxes, vtkDataSet *cellDataSet, vtkPointSet *pointCloud, const std::vector< vtkBoundingBox > &cellBoundingBoxes, std::unordered_map< vtkIdType, std::set< vtkIdType > > &collisionListMap, bool updateProgress=false)
Method performing the cell detection.
char * NumberOfOverlapsPerCellArrayName
Output cell scalar field counting the number of cells that each cell was found to collide.
concrete class for storing a set of points
Definition vtkPointSet.h:98
int vtkIdType
Definition vtkType.h:367