package com.nutiteq.maps.projections; public class Ellipsoid { private final double equatorialRadius; private final double polarRadius; private final double eccentricity; private final double inverseFlattening; /** * GRS80 ellipsoid */ public static final Ellipsoid GRS80 = new Ellipsoid(6378137.0, 6356752.31414); // E = 0.081819191043495395466605394631969 public static final Ellipsoid GRS80_2 = new Ellipsoid(6378137.0, 6356752.3141); // E = 0.081819191119888192709998327707243 /** * WGS84 ellipsoid */ public static final Ellipsoid WGS84 = new Ellipsoid(6378137.0, 6356752.314245); // E = 0.081819190842964302361054726967476 public static final Ellipsoid WGS84_2 = new Ellipsoid(6378137.0, 6356752.3142); // E = 0.081819190928906199466877879557762 public static final Ellipsoid WGS84_3 = new Ellipsoid(6378137.0, 6356752.314245179); // E = 0.081819190842622444592385648655019 public static final Ellipsoid WGRS8084 = new Ellipsoid(6378137.0, 6356752.3); // E = 0.081819218048344747117551469344841 /** * Krasovsky ellipsoid */ public static final Ellipsoid KRASOVSKY = new Ellipsoid(6378245.0, 6356863.0); // E = 0.081813369872039993164418410983635 /** * create a new ellipsoid and precompute its parameters * * @param equatorialRadius * ellipsoid long axis (in meters) * @param polarRadius * ellipsoid short axis (in meters) */ public Ellipsoid(final double equatorialRadius, final double polarRadius) { this.equatorialRadius = equatorialRadius; this.polarRadius = polarRadius; final double e2 = (equatorialRadius * equatorialRadius - polarRadius * polarRadius) / (equatorialRadius * equatorialRadius); eccentricity = Math.sqrt(e2); inverseFlattening = equatorialRadius / (equatorialRadius - polarRadius); } public double getEquatorialRadius() { return equatorialRadius; } public double getPolarRadius() { return polarRadius; } public double getEccentricity() { return eccentricity; } public double getInverseFlattening() { return inverseFlattening; } }