cdm/src/main/java/ucar/unidata/geoloc/projection/Utm_To_Gdc_Converter.java
private void init(double a, double f, int zone, boolean hemisphere_north) {
    A = a;
    F = 1.0 / f; // F is flattening
    this.zone = zone;
    this.hemisphere_north = hemisphere_north;

    //  Create the ERM constants.
    Eps2 = (F) * (2.0 - F);
    Eps25 = .25 * (Eps2);
    EF = F / (2.0 - F);
    Con2 = 2 / (1.0 - Eps2);
    Con6 = .166666666666667;
    Con24 = 4 * .0416666666666667 / (1 - Eps2);
    Con120 = .00833333333333333;
    Con720 = 4 * .00138888888888888 / (1 - Eps2);
    double polx1a = 1.0 - Eps2 / 4.0 - 3.0 / 64.0 * Math.pow(Eps2, 2)
        - 5.0 / 256.0 * Math.pow(Eps2, 3)
        - 175.0 / 16384.0 * Math.pow(Eps2, 4);

    conap = A * polx1a;

    double polx2a = 3.0 / 2.0 * EF - 27.0 / 32.0 * Math.pow(EF, 3);

    double polx4a = 21.0 / 16.0 * Math.pow(EF, 2)
        - 55.0 / 32.0 * Math.pow(EF, 4);

    double polx6a = 151.0 / 96.0 * Math.pow(EF, 3);

    double polx8a = 1097.0 / 512.0 * Math.pow(EF, 4);

    polx2b = polx2a * 2.0 + polx4a * 4.0 + polx6a * 6.0 + polx8a * 8.0;

    polx3b = polx4a * -8.0 - polx6a * 32.0 - 80.0 * polx8a;
    polx4b = polx6a * 32.0 + 192.0 * polx8a;
    polx5b = -128.0 * polx8a;
  }
private void init(double a, double f, int zone, boolean hemisphere_north) {
    A = a;
    F = 1.0 / f; // F is flattening
    this.zone = zone;
    this.hemisphere_north = hemisphere_north;

    //  Create the ERM constants.
    Eps2 = (F) * (2.0 - F);
    Eps25 = .25 * (Eps2);
    EF = F / (2.0 - F);
    Con2 = 2 / (1.0 - Eps2);
    Con6 = .166666666666667;
    Con24 = 4 * .0416666666666667 / (1 - Eps2);
    Con120 = .00833333333333333;
    Con720 = 4 * .00138888888888888 / (1 - Eps2);
    double polx1a = 1.0 - Eps2 / 4.0 - 3.0 / 64.0 * Math.pow(Eps2, 2)
        - 5.0 / 256.0 * Math.pow(Eps2, 3)
        - 175.0 / 16384.0 * Math.pow(Eps2, 4);

    conap = A * polx1a;

    double polx2a = 3.0 / 2.0 * EF - 27.0 / 32.0 * Math.pow(EF, 3);

    double polx4a = 21.0 / 16.0 * Math.pow(EF, 2)
        - 55.0 / 32.0 * Math.pow(EF, 4);

    double polx6a = 151.0 / 96.0 * Math.pow(EF, 3);

    double polx8a = 1097.0 / 512.0 * Math.pow(EF, 4);

    polx2b = polx2a * 2.0 + polx4a * 4.0 + polx6a * 6.0 + polx8a * 8.0;

    polx3b = polx4a * -8.0 - polx6a * 32.0 - 80.0 * polx8a;
    polx4b = polx6a * 32.0 + 192.0 * polx8a;
    polx5b = -128.0 * polx8a;
  }
private void init ( double a , double f , int zone , boolean hemisphere_north ) { A = a ; F = 1.0 / f ; // F is flattening
 this . zone = zone ; this . hemisphere_north = hemisphere_north ; //  Create the ERM constants.
 Eps2 = ( F ) * ( 2.0 - F ) ; Eps25 = .25 * ( Eps2 ) ; EF = F / ( 2.0 - F ) ; Con2 = 2 / ( 1.0 - Eps2 ) ; Con6 = .166666666666667 ; Con24 = 4 * .0416666666666667 / ( 1 - Eps2 ) ; Con120 = .00833333333333333 ; Con720 = 4 * .00138888888888888 / ( 1 - Eps2 ) ; double polx1a = 1.0 - Eps2 / 4.0 - 3.0 / 64.0 * Math . pow ( Eps2 , 2 ) - 5.0 / 256.0 * Math . pow ( Eps2 , 3 ) - 175.0 / 16384.0 * Math . pow ( Eps2 , 4 ) ; conap = A * polx1a ; double polx2a = 3.0 / 2.0 * EF - 27.0 / 32.0 * Math . pow ( EF , 3 ) ; double polx4a = 21.0 / 16.0 * Math . pow ( EF , 2 ) - 55.0 / 32.0 * Math . pow ( EF , 4 ) ; double polx6a = 151.0 / 96.0 * Math . pow ( EF , 3 ) ; double polx8a = 1097.0 / 512.0 * Math . pow ( EF , 4 ) ; polx2b = polx2a * 2.0 + polx4a * 4.0 + polx6a * 6.0 + polx8a * 8.0 ; polx3b = polx4a * - 8.0 - polx6a * 32.0 - 80.0 * polx8a ; polx4b = polx6a * 32.0 + 192.0 * polx8a ; polx5b = - 128.0 * polx8a ; }
initialize

@param a                major axis
@param f                inverse flattening
@param zone             UTM zone
@param hemisphere_north is in northern hemisphere
initialize