/// <summary>
        /// Initializes the transform using the parameters from the specified coordinate system information
        /// </summary>
        /// <param name="projInfo">A ProjectionInfo class contains all the standard and custom parameters needed to initialize this transform</param>
        protected override void OnInit(ProjectionInfo projInfo)
        {
            const double phi_0 = 0.0;

            _rok = A/K0;
            _rtk = A*K0;
            if (projInfo.Parameters.ContainsKey("alpha"))
            {
                double alpha = projInfo.ParamR("alpha");
                double lonz = projInfo.ParamR("lonc");
                _singam = Math.Atan(-Math.Cos(alpha)/(-Math.Sin(phi_0)*Math.Sin(alpha))) + lonz;
                _sinphi = Math.Asin(Math.Cos(phi_0)*Math.Sin(alpha));
            }
            else
            {
                double phi_1 = projInfo.GetPhi1();
                double phi_2 = projInfo.GetPhi2();
                double lam_1 = projInfo.ParamR("lon_1");
                double lam_2 = projInfo.ParamR("lon_2");
                _singam = Math.Atan2(Math.Cos(phi_1)*Math.Sin(phi_2)*Math.Cos(lam_1) -
                                     Math.Sin(phi_1)*Math.Cos(phi_2)*Math.Cos(lam_2),
                                     Math.Sin(phi_1)*Math.Cos(phi_2)*Math.Sin(lam_2) -
                                     Math.Cos(phi_1)*Math.Sin(phi_2)*Math.Sin(lam_1));
                _sinphi = Math.Atan(-Math.Cos(_singam - lam_1)/Math.Tan(phi_1));
            }
            Lam0 = _singam + HalfPi;
            _cosphi = Math.Cos(_sinphi);
            _sinphi = Math.Sin(_sinphi);
            _singam = Math.Sin(_singam);
        }