We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 32020bd commit 85a426eCopy full SHA for 85a426e
1 file changed
include/mapbox/geojsonvt/convert.hpp
@@ -23,8 +23,14 @@ struct project {
23
vt_point operator()(const geometry::point<double>& p) {
24
const double sine = std::sin(p.y * M_PI / 180);
25
const double x = p.x / 360 + 0.5;
26
- const double y =
27
- std::max(std::min(0.5 - 0.25 * std::log((1 + sine) / (1 - sine)) / M_PI, 1.0), 0.0);
+
+ double oneMinusSine = 1.0 - sine;
28
+ const double epsilon = 0.0000001;
29
+ if (oneMinusSine < epsilon) { // Avoid overflow.
30
+ oneMinusSine = epsilon;
31
+ }
32
+ const double y = std::max(std::min(0.5 - 0.25 * std::log((1 + sine) / oneMinusSine) / M_PI, 1.0), 0.0);
33
34
return { x, y, 0.0 };
35
}
36
0 commit comments