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:
authorDaria Volvenkova <d.volvenkova@corp.mail.ru>2016-07-19 16:39:51 +0300
committerDaria Volvenkova <d.volvenkova@corp.mail.ru>2016-07-19 16:41:41 +0300
commit09f40ceeb006843c405923afb05c5522f7d9f921 (patch)
tree49f4df42e7dc3fde99a2f6bdd94d25cf0a9dc993 /geometry
parent40856edc02a43097f1ef7d62268fe85d6523e718 (diff)
Fixed house numbers selection in perspective mode.
Diffstat (limited to 'geometry')
-rw-r--r--geometry/screenbase.cpp9
-rw-r--r--geometry/screenbase.hpp1
2 files changed, 8 insertions, 2 deletions
diff --git a/geometry/screenbase.cpp b/geometry/screenbase.cpp
index 89455ae424..32ba27b523 100644
--- a/geometry/screenbase.cpp
+++ b/geometry/screenbase.cpp
@@ -440,14 +440,19 @@ m2::PointD ScreenBase::PtoP3d(m2::PointD const & pt) const
return PtoP3d(pt, 0.0);
}
+double ScreenBase::GetZScale() const
+{
+ double const averageScale3d = m_isPerspective ? 2.7 : 1.0;
+ return 2.0 / (m_Scale * m_ViewportRect.SizeY() * averageScale3d);
+}
+
m2::PointD ScreenBase::PtoP3d(m2::PointD const & pt, double ptZ) const
{
if (!m_isPerspective)
return pt;
-
Vector3dT const normalizedPoint{float(2.0 * pt.x / m_PixelRect.SizeX() - 1.0),
-float(2.0 * pt.y / m_PixelRect.SizeY() - 1.0),
- float(2.0 * ptZ / m_PixelRect.SizeY()), 1.0};
+ float(ptZ * GetZScale()), 1.0};
Vector3dT const perspectivePoint = normalizedPoint * m_Pto3d;
diff --git a/geometry/screenbase.hpp b/geometry/screenbase.hpp
index 9ac6650bd6..2346f1dd0b 100644
--- a/geometry/screenbase.hpp
+++ b/geometry/screenbase.hpp
@@ -140,6 +140,7 @@ public:
double GetMaxRotationAngle() const { return m_3dMaxAngleX; }
double GetAngleFOV() const { return m_3dFOV; }
double GetScale3d() const { return m_3dScale; }
+ double GetZScale() const;
double GetDepth3d() const { return m_3dFarZ - m_3dNearZ; }