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-06-06 23:05:26 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:19:17 +0300
commit665dc21283165c2efec23c9815238648607cd3eb (patch)
treef39a2ca7b6cedd186674df20d7f8cbd03557e549 /indexer/scales.cpp
parent5e7f1f38849ff59ae29c82b4395949e23f3617fd (diff)
GetRationForLevel, GetRectForLevel implementation.
Diffstat (limited to 'indexer/scales.cpp')
-rw-r--r--indexer/scales.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/indexer/scales.cpp b/indexer/scales.cpp
index 978698663e..b4e08a1f66 100644
--- a/indexer/scales.cpp
+++ b/indexer/scales.cpp
@@ -41,6 +41,27 @@ namespace scales
return GetScaleLevel((dx + dy) / 2.0);
}
+ double GetRationForLevel(int level)
+ {
+ if (level < initial_level) level = initial_level;
+ return pow(2.0, level - initial_level);
+ }
+
+ m2::RectD GetRectForLevel(int level, m2::PointD const & center, double X2YRatio)
+ {
+ double const dy = 2.0*GetRationForLevel(level) / (1.0 + X2YRatio);
+ double const dx = X2YRatio * dy;
+ ASSERT_GREATER ( dy, 0.0, () );
+ ASSERT_GREATER ( dx, 0.0, () );
+
+ double const xL = (MercatorBounds::maxX - MercatorBounds::minX) / (2.0*dx);
+ double const yL = (MercatorBounds::maxY - MercatorBounds::minY) / (2.0*dy);
+ ASSERT_GREATER ( xL, 0.0, () );
+ ASSERT_GREATER ( yL, 0.0, () );
+
+ return m2::RectD(center.x - xL, center.y - yL, center.x + xL, center.y + yL);
+ }
+
namespace
{
double GetEpsilonImpl(int level, int logEps)