protected double qsfn(double sin) {
   if (_e >= CoordinateSystem.getInstance().getAccuracy()) {
     double con = _e * sin;
     return _oneMinusE2
         * (sin / (1.0 - con * con) - (0.5 / _e) * Math.log((1. - con) / (1.0 + con)));
   } else {
     return (2.0 * sin);
   }
 }
 protected double phi1(double qs) {
   double dLat, lat = Math.asin(0.5 * qs);
   if (_e < CoordinateSystem.getInstance().getAccuracy()) return lat;
   int i = 15;
   do {
     double sinLat = Math.sin(lat);
     double cosLat = Math.cos(lat);
     double con = _e * sinLat;
     double com = 1.0 - con * con;
     dLat =
         0.5
             * com
             * com
             / cosLat
             * (qs / _oneMinusE2 - sinLat / com + 0.5 / _e * Math.log((1.0 - con) / (1.0 + con)));
     lat += dLat;
   } while (Math.abs(dLat) > 1.0E-10 && --i != 0);
   return (i != 0 ? lat : Double.MAX_VALUE);
 }
 public CoordinateSystemI inputCoordinateSystem() {
   return com.opsresearch.orobjects.lib.geom.geo.CoordinateSystem.getInstance();
 }
 public Projection() {
   _geodetic = CoordinateSystem.getInstance().getGeodetic();
 }