PointKdTreeSearcher2.h
Go to the documentation of this file.
1 /*************************************************************************
2 > File Name: PointKdTreeSearcher2.h
3 > Project Name: CubbyFlow
4 > Author: Chan-Ho Chris Ohk
5 > Purpose: KdTree-based 2-D point searcher.
6 > Created Time: 2017/12/05
7 > Copyright (c) 2018, Chan-Ho Chris Ohk
8 *************************************************************************/
9 #ifndef CUBBYFLOW_POINT_KDTREE_SEARCHER2_H
10 #define CUBBYFLOW_POINT_KDTREE_SEARCHER2_H
11 
12 #include <Core/Geometry/KdTree.h>
14 
15 namespace CubbyFlow
16 {
24  {
25  public:
27 
28  class Builder;
29 
32 
35 
37  void Build(const ConstArrayAccessor1<Vector2D>& points) override;
38 
47  void ForEachNearbyPoint(
48  const Vector2D& origin, double radius,
49  const ForEachNearbyPointFunc& callback) const override;
50 
60  bool HasNearbyPoint(const Vector2D& origin, double radius) const override;
61 
68  PointNeighborSearcher2Ptr Clone() const override;
69 
72 
74  void Set(const PointKdTreeSearcher2& other);
75 
77  void Serialize(std::vector<uint8_t>* buffer) const override;
78 
80  void Deserialize(const std::vector<uint8_t>& buffer) override;
81 
83  static Builder GetBuilder();
84 
85  private:
86  KdTree<double, 2> m_tree;
87  };
88 
90  using PointKdTreeSearcher2Ptr = std::shared_ptr<PointKdTreeSearcher2>;
91 
96  {
97  public:
100 
103 
106  };
107 }
108 
109 #endif
PointKdTreeSearcher2 & operator=(const PointKdTreeSearcher2 &other)
Assignment operator.
PointNeighborSearcher2Ptr BuildPointNeighborSearcher() const override
Returns shared pointer of PointNeighborSearcher3 type.
void ForEachNearbyPoint(const Vector2D &origin, double radius, const ForEachNearbyPointFunc &callback) const override
void Set(const PointKdTreeSearcher2 &other)
Copy from the other instance.
Front-end to create PointKdTreeSearcher2 objects step by step.
Definition: PointKdTreeSearcher2.h:95
void Serialize(std::vector< uint8_t > *buffer) const override
Serializes the neighbor searcher into the buffer.
bool HasNearbyPoint(const Vector2D &origin, double radius) const override
PointNeighborSearcher2Ptr Clone() const override
Creates a new instance of the object with same properties than original.
std::function< void(size_t, const Vector2D &)> ForEachNearbyPointFunc
Definition: PointNeighborSearcher2.h:34
#define CUBBYFLOW_NEIGHBOR_SEARCHER2_TYPE_NAME(DerivedClassName)
Definition: PointNeighborSearcher2.h:94
1-D read-only array accessor class.
Definition: ArrayAccessor1.h:185
KdTree-based 2-D point searcher.
Definition: PointKdTreeSearcher2.h:23
PointKdTreeSearcher2 Build() const
Builds PointKdTreeSearcher2 instance.
Abstract base class for 2-D point neighbor searcher builders.
Definition: PointNeighborSearcher2.h:82
Definition: pybind11Utils.h:24
Abstract base class for 2-D neighbor point searcher.
Definition: PointNeighborSearcher2.h:29
static Builder GetBuilder()
Returns builder fox PointKdTreeSearcher2.
std::shared_ptr< PointKdTreeSearcher2 > PointKdTreeSearcher2Ptr
Shared pointer for the PointKdTreeSearcher2 type.
Definition: PointKdTreeSearcher2.h:90
void Deserialize(const std::vector< uint8_t > &buffer) override
Deserializes the neighbor searcher from the buffer.
void Build(const ConstArrayAccessor1< Vector2D > &points) override
Builds internal acceleration structure for given points list.
2-D vector class.
Definition: Vector2.h:26
std::shared_ptr< PointNeighborSearcher2 > PointNeighborSearcher2Ptr
Shared pointer for the PointNeighborSearcher2 type.
Definition: PointNeighborSearcher2.h:79
PointKdTreeSearcher2Ptr MakeShared() const
Builds shared pointer of PointKdTreeSearcher2 instance.
PointKdTreeSearcher2()
Constructs an empty kD-tree instance.