public Point2D.Double project(double lam, double phi, Point2D.Double xy) {
   if (spherical) {
     xy.x = scaleFactor * lam;
     xy.y = Math.sin(phi) / scaleFactor;
   } else {
     xy.x = scaleFactor * lam;
     xy.y = .5 * MapMath.qsfn(Math.sin(phi), e, one_es) / scaleFactor;
   }
   return xy;
 }
  public void initialize() {
    super.initialize();
    double t = trueScaleLatitude;

    scaleFactor = Math.cos(t);
    if (es != 0) {
      t = Math.sin(t);
      scaleFactor /= Math.sqrt(1. - es * t * t);
      apa = MapMath.authset(es);
      qp = MapMath.qsfn(1., e, one_es);
    }
  }