private void initialize(
      double rlong0, double rlat0, double standardLatitude1, double standardLatitude2) {
    super.initialize();
    double t_standardLatitude1,
        m_standardLatitude1,
        t_standardLatitude2,
        m_standardLatitude2,
        t_rlat0;

    northPole = rlat0 > 0.0;
    projectionLatitude = northPole ? ProjectionMath.HALFPI : -ProjectionMath.HALFPI;

    t_standardLatitude1 =
        Math.tan(ProjectionMath.QUARTERPI - 0.5 * standardLatitude1)
            / Math.pow(
                (1.0 - eccentricity * Math.sin(standardLatitude1))
                    / (1.0 + eccentricity * Math.sin(standardLatitude1)),
                0.5 * eccentricity);
    m_standardLatitude1 =
        Math.cos(standardLatitude1)
            / Math.sqrt(1.0 - eccentricity2 * Math.pow(Math.sin(standardLatitude1), 2.0));
    t_standardLatitude2 =
        Math.tan(ProjectionMath.QUARTERPI - 0.5 * standardLatitude2)
            / Math.pow(
                (1.0 - eccentricity * Math.sin(standardLatitude2))
                    / (1.0 + eccentricity * Math.sin(standardLatitude2)),
                0.5 * eccentricity);
    m_standardLatitude2 =
        Math.cos(standardLatitude2)
            / Math.sqrt(1.0 - eccentricity2 * Math.pow(Math.sin(standardLatitude2), 2.0));
    t_rlat0 =
        Math.tan(ProjectionMath.QUARTERPI - 0.5 * rlat0)
            / Math.pow(
                (1.0 - eccentricity * Math.sin(rlat0)) / (1.0 + eccentricity * Math.sin(rlat0)),
                0.5 * eccentricity);

    if (standardLatitude1 != standardLatitude2)
      n =
          (Math.log(m_standardLatitude1) - Math.log(m_standardLatitude2))
              / (Math.log(t_standardLatitude1) - Math.log(t_standardLatitude2));
    else n = Math.sin(standardLatitude1);

    f = m_standardLatitude1 / (n * Math.pow(t_standardLatitude1, n));
    projectionLongitude = rlong0;
    rho0 = radius * f * Math.pow(t_rlat0, n);
  }
  public void initialize() {
    super.initialize();
    double del, cs;

    /* get common factors for simple conics */
    double p1, p2;
    int err = 0;

    /*FIXME
    		if (!pj_param(params, "tlat_1").i ||
    			!pj_param(params, "tlat_2").i) {
    			err = -41;
    		} else {
    			p1 = pj_param(params, "rlat_1").f;
    			p2 = pj_param(params, "rlat_2").f;
    			*del = 0.5 * (p2 - p1);
    			sig = 0.5 * (p2 + p1);
    			err = (Math.abs(*del) < EPS || Math.abs(sig) < EPS) ? -42 : 0;
    			*del = *del;
    		}
    */
    p1 = Math.toRadians(30); // FIXME
    p2 = Math.toRadians(60); // FIXME
    del = 0.5 * (p2 - p1);
    sig = 0.5 * (p2 + p1);
    err = (Math.abs(del) < EPS || Math.abs(sig) < EPS) ? -42 : 0;

    if (err != 0) throw new ProjectionException("Error " + err);

    switch (type) {
      case TISSOT:
        n = Math.sin(sig);
        cs = Math.cos(del);
        rho_c = n / cs + cs / n;
        rho_0 = Math.sqrt((rho_c - 2 * Math.sin(projectionLatitude)) / n);
        break;
      case MURD1:
        rho_c = Math.sin(del) / (del * Math.tan(sig)) + sig;
        rho_0 = rho_c - projectionLatitude;
        n = Math.sin(sig);
        break;
      case MURD2:
        rho_c = (cs = Math.sqrt(Math.cos(del))) / Math.tan(sig);
        rho_0 = rho_c + Math.tan(sig - projectionLatitude);
        n = Math.sin(sig) * cs;
        break;
      case MURD3:
        rho_c = del / (Math.tan(sig) * Math.tan(del)) + sig;
        rho_0 = rho_c - projectionLatitude;
        n = Math.sin(sig) * Math.sin(del) * Math.tan(del) / (del * del);
        break;
      case EULER:
        n = Math.sin(sig) * Math.sin(del) / del;
        del *= 0.5;
        rho_c = del / (Math.tan(del) * Math.tan(sig)) + sig;
        rho_0 = rho_c - projectionLatitude;
        break;
      case PCONIC:
        n = Math.sin(sig);
        c2 = Math.cos(del);
        c1 = 1. / Math.tan(sig);
        if (Math.abs(del = projectionLatitude - sig) - EPS10 >= MapMath.HALFPI)
          throw new ProjectionException("-43");
        rho_0 = c2 * (c1 - Math.tan(del));
        maxLatitude = Math.toRadians(60); // FIXME
        break;
      case VITK1:
        n = (cs = Math.tan(del)) * Math.sin(sig) / del;
        rho_c = del / (cs * Math.tan(sig)) + sig;
        rho_0 = rho_c - projectionLatitude;
        break;
    }
  }