How to determine angle between two geographical locations C#

.NET programming topics
Post Reply
Cyclops
Lieutenant
Lieutenant
Posts: 71
Joined: Wed Jul 15, 2009 1:48 pm
Location: London

How to determine angle between two geographical locations C#

Post by Cyclops » Thu Dec 31, 2009 9:21 am

Use the following method to determine the angle subtended at the earth's center by two geographical coordinates. Latitude is positive north of the equator. Longitude is negative west of Greenwich. Both latitude and longitude are specified in degrees:

Code: Select all

public static double AngleBetweenLocations(double Lat1Degrees, 
                                           double Lon1Degrees, 
                                           double Lat2Degrees, 
                                           double Lon2Degrees)
{
  double Lat1Radians = Radians(Lat1Degrees);
  double Lon1Radians = Radians(Lon1Degrees);
  double Lat2Radians = Radians(Lat2Degrees);
  double Lon2Radians = Radians(Lon2Degrees);
    
  double a = Lon1Radians - Lon2Radians;
    
  if (a < 0.0)
  {
    a = -a;
  }
    
  if (a > Math.PI)
  {
    a = 2.0 * Math.PI - a;
  }
    
  return Math.Acos(
        Math.Sin(Lat2Radians) * Math.Sin(Lat1Radians) + 
        Math.Cos(Lat2Radians) * Math.Cos(Lat1Radians) * Math.Cos(a)
        );
}

public static double Radians(double degrees)
{
  return degrees * Math.PI / 180.0;
}
Post Reply

Return to “.NET Programming”