001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.data.projection.proj; 003 004import static java.lang.Math.PI; 005import static java.lang.Math.atan; 006import static java.lang.Math.log; 007import static java.lang.Math.sinh; 008import static java.lang.Math.tan; 009import static org.openstreetmap.josm.tools.I18n.tr; 010 011import org.openstreetmap.josm.data.projection.ProjectionConfigurationException; 012 013/** 014 * Mercator Projection. 015 */ 016public class Mercator implements Proj { 017 018 @Override 019 public String getName() { 020 return tr("Mercator"); 021 } 022 023 @Override 024 public String getProj4Id() { 025 return "josm:smerc"; // "merc" is ellipsoidal Mercator projection in PROJ.4 026 } 027 028 @Override 029 public void initialize(ProjParameters params) throws ProjectionConfigurationException { 030 } 031 032 @Override 033 public double[] project(double lat_rad, double lon_rad) { 034 return new double[] {lon_rad, log(tan(PI/4 + lat_rad/2))}; 035 } 036 037 @Override 038 public double[] invproject(double east, double north) { 039 return new double[] {atan(sinh(north)), east}; 040 } 041}