summaryrefslogtreecommitdiff
path: root/include/mbgl/util
diff options
context:
space:
mode:
authorAleksandar Stojiljkovic <aleksandar.stojiljkovic@mapbox.com>2019-07-23 17:19:52 +0300
committerAleksandar Stojiljkovic <aleksandar.stojiljkovic@mapbox.com>2019-08-01 09:28:36 +0300
commit73d9f26d03810854c36a96b252885353f8ba81ce (patch)
treef7ed24fc8677192075fda78724c1a1a83da86acd /include/mbgl/util
parent375c3131afcdcedb5a2dfbb19eec29625c44494d (diff)
downloadqtlocation-mapboxgl-73d9f26d03810854c36a96b252885353f8ba81ce.tar.gz
[core] Limit pitch based on edge insets. Fix max Z calculation in getProjMatrix.
Patch partly fixes #15163 in a way that it doesn't allow loading tens of thousands of tiles and attempt to show area above horizon: Limit pitch based on edge insets. It is not too bad - current limit of 60 degrees stays active until center of perspective is moved towards the bottom, to 84% of screen height. The plan is to split removal of 60 degrees limit to follow up patch. Fix max Z calculation in getProjMatrix. TransformState::getProjMatrix calculation of farZ was complex with possibility to lead to negative z values. Replacing it with simpler, precise calculation: furthestDistance = cameraToCenterDistance / (1 - tanFovAboveCenter * std::tan(getPitch())); TransformState::getProjMatrix calculation of farZ was an aproximation. Replacing it with simpler, but precise calculation. Related to: #15163
Diffstat (limited to 'include/mbgl/util')
-rw-r--r--include/mbgl/util/projection.hpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/mbgl/util/projection.hpp b/include/mbgl/util/projection.hpp
index 9619a380b4..f0b9115eb0 100644
--- a/include/mbgl/util/projection.hpp
+++ b/include/mbgl/util/projection.hpp
@@ -98,7 +98,7 @@ private:
return Point<double> {
util::LONGITUDE_MAX + latLng.longitude(),
util::LONGITUDE_MAX - util::RAD2DEG * std::log(std::tan(M_PI / 4 + latitude * M_PI / util::DEGREES_MAX))
- } * worldSize / util::DEGREES_MAX;
+ } * (worldSize / util::DEGREES_MAX);
}
};