From c10441aa9bdd1a27b4e298c5cdf06649c5f59672 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Wed, 19 Jan 2011 02:07:56 +0200 Subject: [PATCH] Correct merge for SimplifyPoints --- indexer/indexer_tool/feature_sorter.cpp | 35 ------------------------- indexer/indexer_tool/feature_sorter.hpp | 16 ++++++++--- 2 files changed, 13 insertions(+), 38 deletions(-) diff --git a/indexer/indexer_tool/feature_sorter.cpp b/indexer/indexer_tool/feature_sorter.cpp index f0f835f0f4..aaed963176 100644 --- a/indexer/indexer_tool/feature_sorter.cpp +++ b/indexer/indexer_tool/feature_sorter.cpp @@ -72,43 +72,8 @@ namespace namespace feature { typedef vector points_t; -/* - void SimplifyPoints(points_t const & in, points_t & out, int level) - { - if (in.size() >= 2) - { - typedef mn::DistanceToLineSquare DistanceF; - double const eps = my::sq(scales::GetEpsilonForSimplify(level)); - - SimplifyNearOptimal(20, in.begin(), in.end()-1, - eps, MakeBackInsertFunctor(out)); - - switch (out.size()) - { - case 0: - out.push_back(in.front()); - // no break - case 1: - out.push_back(in.back()); - break; - default: - if (!is_equal(out.back(), in.back())) - out.push_back(in.back()); - } - -#ifdef DEBUG - for (size_t i = 2; i < out.size(); ++i) - { - double const dist = DistanceF(out[i-2], out[i])(out[i-1]); - ASSERT_GREATER(dist, eps, ()); - } -#endif - } - } -*/ void TesselateInterior(points_t const & bound, list const & holes, points_t & triangles); - class FeaturesCollector2 : public FeaturesCollector { FilesContainerW m_writer; diff --git a/indexer/indexer_tool/feature_sorter.hpp b/indexer/indexer_tool/feature_sorter.hpp index 8426c51d5b..52f4ee478d 100644 --- a/indexer/indexer_tool/feature_sorter.hpp +++ b/indexer/indexer_tool/feature_sorter.hpp @@ -32,9 +32,11 @@ namespace feature { if (in.size() >= 2) { - SimplifyNearOptimal >( - 20, in.begin(), in.end()-1, my::sq(scales::GetEpsilonForSimplify(level)), - MakeBackInsertFunctor(out)); + typedef mn::DistanceToLineSquare DistanceF; + double const eps = my::sq(scales::GetEpsilonForSimplify(level)); + + SimplifyNearOptimal(20, in.begin(), in.end()-1, + eps, MakeBackInsertFunctor(out)); switch (out.size()) { @@ -48,6 +50,14 @@ namespace feature if (!are_points_equal(out.back(), in.back())) out.push_back(in.back()); } + +#ifdef DEBUG + for (size_t i = 2; i < out.size(); ++i) + { + double const dist = DistanceF(out[i-2], out[i])(out[i-1]); + ASSERT_GREATER(dist, eps, ()); + } +#endif } } }