VTK  9.7.20261111
vtkAnnularBinIterator.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
27#ifndef vtkAnnularBinIterator_h
28#define vtkAnnularBinIterator_h
29
30#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_8_0
31#include "vtkFiltersMeshingModule.h" // For export macro
32#include "vtkLocatorInterface.h" // for array of (pt,d**2) tuples
33#include "vtkSystemIncludes.h"
34
35#include <iostream>
36
37VTK_ABI_NAMESPACE_BEGIN
38
40class vtkDoubleArray;
41struct InternalAnnularBinIterator;
42
43// A simple dispatch mechanism to internal, templated classes.
44VTK_WRAPEXCLUDE struct VTKFILTERSMESHING_EXPORT vtkAnnularBinIteratorDispatch
45{
47 InternalAnnularBinIterator* Iterator;
48
50 : LargeIds(false)
51 , Iterator(nullptr)
52 {
53 }
55 {
56 this->LargeIds = false;
57 this->Iterator = nullptr;
58 }
60
63 bool Begin(vtkIdType pid, double x[3], vtkDist2TupleArray& results);
64 bool Next(double radius2, vtkDoubleArray* spheres, vtkDist2TupleArray& results);
66 void GetBin(int IJ[2]);
67 double GetMinD2();
68}; // vtkAnnularBinIteratorDispatch
69
70// VTK class proper
72 "Use vtkStaticPointLocator2D::FindNPointsInShell() and FindPointsInShell() instead.")
73 VTKFILTERSMESHING_EXPORT vtkAnnularBinIterator
74{
75public:
82
89 : Dispatch(loc)
90 {
91 }
92
98 void Initialize(vtkStaticPointLocator2D* locator) { this->Dispatch.Initialize(locator); }
99
105 bool Begin(vtkIdType ptId, double x[3], vtkDist2TupleArray& results)
106 {
107 return this->Dispatch.Begin(ptId, x, results);
108 }
109
115 bool Next(double radius2, vtkDoubleArray* circles, vtkDist2TupleArray& results)
116 {
117 return this->Dispatch.Next(radius2, circles, results);
118 }
119
123 vtkIdType GetBinId() { return this->Dispatch.GetBinId(); }
124
128 void GetBin(int IJ[2]) { this->Dispatch.GetBin(IJ); }
129
134 double GetMinD2() { return this->Dispatch.GetMinD2(); }
135
136private:
137 // Used to dispatch to the internally instantiated templated classes.
139};
140
141VTK_ABI_NAMESPACE_END
142
143#endif
144// VTK-HeaderTest-Exclude: vtkAnnularBinIterator.h
vtkAnnularBinIterator(vtkStaticPointLocator2D *loc)
Construct the iterator with a vtkStaticPointLocator2D.
vtkAnnularBinIterator & operator=(const vtkAnnularBinIterator &)
void Initialize(vtkStaticPointLocator2D *locator)
Initialize an iterator with the associated vtkStaticPointLocator2D over which to iterate.
vtkAnnularBinIterator(const vtkAnnularBinIterator &)
bool Next(double radius2, vtkDoubleArray *circles, vtkDist2TupleArray &results)
Move to the next bin, returning all points that are inside the circle given by x[2] (specified in Beg...
double GetMinD2()
Return the minimum distance of the current annulus of bins to the initial starting point x[2].
vtkAnnularBinIterator()=default
Construct default iterator.
void GetBin(int IJ[2])
Return the current bin/bucket index IJ of traversal.
vtkIdType GetBinId()
Return the current bin/bucket id of traversal.
bool Begin(vtkIdType ptId, double x[3], vtkDist2TupleArray &results)
Begin iterating over the bins, starting with point ptId at position x[3].
dynamic, self-adjusting array of double
quickly locate points in 2-space
vtkAnnularBinIteratorDispatch(vtkStaticPointLocator2D *loc)
vtkAnnularBinIteratorDispatch(const vtkAnnularBinIteratorDispatch &)
InternalAnnularBinIterator * Iterator
bool Next(double radius2, vtkDoubleArray *spheres, vtkDist2TupleArray &results)
bool Begin(vtkIdType pid, double x[3], vtkDist2TupleArray &results)
void Initialize(vtkStaticPointLocator2D *locator)
vtkAnnularBinIteratorDispatch & operator=(const vtkAnnularBinIteratorDispatch &)
Represent an array of vtkDist2Tuples.
#define VTK_DEPRECATED_IN_9_8_0(reason)
int vtkIdType
Definition vtkType.h:366
#define VTK_WRAPEXCLUDE