From 2188d68b6c09dec676c294223aa7d1a4c24c85f0 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Tue, 18 Oct 2016 12:12:57 +0300 Subject: [core] Move TransformState::{un,}project() to Projection --- include/mbgl/util/projection.hpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'include/mbgl') diff --git a/include/mbgl/util/projection.hpp b/include/mbgl/util/projection.hpp index 0b6e9f6bf1..4212e5da7a 100644 --- a/include/mbgl/util/projection.hpp +++ b/include/mbgl/util/projection.hpp @@ -46,6 +46,22 @@ public: return LatLng(latitude, longitude); } + + static Point project(const LatLng& latLng, double scale) { + return Point { + util::LONGITUDE_MAX + latLng.longitude, + util::LONGITUDE_MAX - util::RAD2DEG * std::log(std::tan(M_PI / 4 + latLng.latitude * M_PI / util::DEGREES_MAX)) + } * worldSize(scale) / util::DEGREES_MAX; + } + + static LatLng unproject(const Point& p, double scale, LatLng::WrapMode wrapMode = LatLng::Unwrapped) { + auto p2 = p * util::DEGREES_MAX / worldSize(scale); + return LatLng { + util::DEGREES_MAX / M_PI * std::atan(std::exp((util::LONGITUDE_MAX - p2.y) * util::DEG2RAD)) - 90.0, + p2.x - util::LONGITUDE_MAX, + wrapMode + }; + } }; } // namespace mbgl -- cgit v1.2.1