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 }