ProjNet.CoordinateSystems.Projections.TransverseMercator.DegreesToMeters C# (CSharp) Method

DegreesToMeters() public method

Converts coordinates in decimal degrees to projected meters.
public DegreesToMeters ( double lonlat ) : double[]
lonlat double The point in decimal degrees.
return double[]
        public override double[] DegreesToMeters(double[] lonlat)
        {
            double lon = Degrees2Radians(lonlat[0]);
            double lat = Degrees2Radians(lonlat[1]);

            double delta_lon=0.0;	/* Delta longitude (Given longitude - center 	*/
            double sin_phi, cos_phi;/* sin and cos value				*/
            double al, als;		/* temporary values				*/
            double c, t, tq;	/* temporary values				*/
            double con, n, ml;	/* cone constant, small m			*/

            delta_lon = adjust_lon(lon - central_meridian);
            sincos(lat, out sin_phi, out cos_phi);

            al  = cos_phi * delta_lon;
            als = Math.Pow(al,2);
            c = esp * Math.Pow(cos_phi,2);
            tq  = Math.Tan(lat);
            t = Math.Pow(tq,2);
            con = 1.0 - es * Math.Pow(sin_phi,2);
            n = this._semiMajor / Math.Sqrt(con);
            ml = this._semiMajor * mlfn(e0, e1, e2, e3, lat);

            double x =
                scale_factor * n * al * (1.0 + als / 6.0 * (1.0 - t + c + als / 20.0 *
                (5.0 - 18.0 * t + Math.Pow(t, 2) + 72.0 * c - 58.0 * esp))) + false_easting;
            double y = scale_factor * (ml - ml0 + n * tq * (als * (0.5 + als / 24.0 *
                (5.0 - t + 9.0 * c + 4.0 * Math.Pow(c,2) + als / 30.0 * (61.0 - 58.0 * t
                + Math.Pow(t,2) + 600.0 * c - 330.0 * esp))))) + false_northing;
            if(lonlat.Length<3)
                return new double[] { x / _metersPerUnit, y / _metersPerUnit };
            else
                return new double[] { x / _metersPerUnit, y / _metersPerUnit, lonlat[2] };
        }