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