SourceXtractorPlusPlus 1.0.3
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
QuadTree.h
Go to the documentation of this file.
1
17
18#ifndef _SEUTILS_QUADTREE_H_
19#define _SEUTILS_QUADTREE_H_
20
21#include <vector>
22#include <memory>
23
24namespace SourceXtractor {
25
26template <typename T>
28 static double getCoord(const T& t, size_t index);
29};
30
31template<typename T>
32class QuadTree {
33public:
35
36 struct Coord {
37 double x, y;
38 };
39
40 QuadTree(size_t capacity=100);
41 QuadTree(const QuadTree& tree);
42
43 void add(const T& data);
44 void remove(const T& data);
45 std::vector<T> getPointsWithinRange(Coord c, double range) const;
46
47private:
48 void addLocally(const T& data);
49 void split();
50 void expand(Coord c);
51 size_t getQuadrant(Coord c) const;
52 bool isContained(Coord c) const;
53
54 Coord getQuadrantMin(size_t quadrant) const;
55 Coord getQuadrantMax(size_t quadrant) const;
56
57 size_t m_capacity;
58
63};
64
65}
66
67#include "_impl/QuadTree.icpp"
68
69#endif /* _SEUTILS_QUADTREE_H_ */
void remove(const T &data)
Definition QuadTree.icpp:64
std::vector< T > getPointsWithinRange(Coord c, double range) const
Definition QuadTree.icpp:81
bool isContained(Coord c) const
std::shared_ptr< QuadTree< T > > m_sub_trees[4]
Definition QuadTree.h:62
Coord getQuadrantMax(size_t quadrant) const
void add(const T &data)
Definition QuadTree.icpp:40
void addLocally(const T &data)
Coord getQuadrantMin(size_t quadrant) const
QuadTreeTraits< T > Traits
Definition QuadTree.h:34
QuadTree(size_t capacity=100)
Definition QuadTree.icpp:24
size_t getQuadrant(Coord c) const
std::vector< T > m_data
Definition QuadTree.h:61
static double getCoord(const T &t, size_t index)