Add faster version of WGS84 -> Web Mercator

This commit is contained in:
Patrick Niklaus 2016-04-09 00:41:26 +02:00
parent 3fa533d91e
commit fa6d4ac0bc

View File

@ -315,9 +315,9 @@ FloatLatitude yToLat(const double y)
double latToY(const FloatLatitude latitude)
{
const double normalized_lat = 90. + static_cast<double>(latitude);
const double y = RAD_TO_DEGREE * std::log(std::tan(normalized_lat * DEGREE_TO_RAD * 0.5));
// apparently this is the (faster) version of the canonical log(tan()) version
const double f = std::sin(DEGREE_TO_RAD * static_cast<double>(latitude));
const double y = RAD_TO_DEGREE * 0.5 * std::log((1 + f) / (1 - f));
const auto clamped_y = std::max(-180., std::min(180., y));
return clamped_y;
}