Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvng <viktor.govako@gmail.com>2011-01-09 21:33:05 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:09:39 +0300
commitcec2fa4919acc3e4eafc3de5e3d7af73d94e9d95 (patch)
tree25543d3789e094dd1128cd1966eece28e0d085a9 /geometry/tree4d.hpp
parent7f7394f4a5f286f6c59c86c02df21f1669a4f2a8 (diff)
Make simple for_each function in kdtree++. Delete other 'visitors'.
Diffstat (limited to 'geometry/tree4d.hpp')
-rw-r--r--geometry/tree4d.hpp30
1 files changed, 21 insertions, 9 deletions
diff --git a/geometry/tree4d.hpp b/geometry/tree4d.hpp
index 858f4d0445..9ab5e791c8 100644
--- a/geometry/tree4d.hpp
+++ b/geometry/tree4d.hpp
@@ -38,7 +38,6 @@ namespace m4
};
typedef KDTree::KDTree<4, value_t> tree_t;
- typedef typename tree_t::template dim_region_type<2>::type region_t;
tree_t m_tree;
typedef vector<value_t const *> store_vec_t;
@@ -59,6 +58,26 @@ namespace m4
if (v.IsIntersect(m_rect))
m_isect.push_back(&v);
}
+
+ bool ScanLeft(size_t plane, value_t const & v) const
+ {
+ switch (plane & 3) // % 4
+ {
+ case 2: return m_rect.minX() < v[2];
+ case 3: return m_rect.minY() < v[3];
+ default: return true;
+ }
+ }
+
+ bool ScanRight(size_t plane, value_t const & v) const
+ {
+ switch (plane & 3) // % 4
+ {
+ case 0: return m_rect.maxX() > v[0];
+ case 1: return m_rect.maxY() > v[1];
+ default: return true;
+ }
+ }
};
public:
@@ -66,15 +85,8 @@ namespace m4
template <class TCompare>
void ReplaceIf(T const & obj, m2::RectD const & rect, TCompare comp)
{
- region_t rgn;
- rgn._M_low_bounds[0] = rect.minX();
- rgn._M_high_bounds[0] = rect.maxX();
- rgn._M_low_bounds[1] = rect.minY();
- rgn._M_high_bounds[1] = rect.maxY();
-
store_vec_t isect;
-
- m_tree.visit_within_range(rgn, insert_if_intersect(isect, rect));
+ m_tree.for_each(insert_if_intersect(isect, rect));
for (size_t i = 0; i < isect.size(); ++i)
if (!comp(obj, isect[i]->m_val))