public static LatLongClass CalculateNewPosition(LatLongClass PresentPosition, double Distance, double Azimuth)
{
LatLongClass NewPosition = new LatLongClass();
// instantiate the calculator
GeodeticCalculator geoCalc = new GeodeticCalculator();
// select a reference elllipsoid
Ellipsoid reference = Ellipsoid.WGS84;
// set Lincoln Memorial coordinates
GlobalCoordinates Present_Pos;
Present_Pos = new GlobalCoordinates(new Angle(PresentPosition.GetLatLongDecimal().LatitudeDecimal), new Angle(PresentPosition.GetLatLongDecimal().LongitudeDecimal));
// now, plug the result into to direct solution
GlobalCoordinates dest;
Angle endBearing = new Angle();
double Distance_In_Meeters = (Distance * NMtoKM * 1000.0);
dest = geoCalc.CalculateEndingGlobalCoordinates(reference, Present_Pos, Azimuth, Distance_In_Meeters, out endBearing);
NewPosition.SetPosition(new LatLongDecimal(dest.Latitude.Degrees, dest.Longitude.Degrees));
return NewPosition;
}