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    }