1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
public class Gps
{
public double Latitude { get; set; }
public double Longitude { get; set; }
/// <summary>
/// Retourne la distance en km entre 2 points gps
/// </summary>
public static double GetDistance(Gps g1, Gps g2)
{
const double DEGTORAD = Math.PI / 180.0;
const double RADTODEG = 180.0 / Math.PI;
double theta = g1.Longitude - g2.Longitude;
double d = Math.Sin(g1.Latitude * DEGTORAD) * Math.Sin(g2.Latitude * DEGTORAD) + Math.Cos(g1.Latitude * DEGTORAD) * Math.Cos(g2.Latitude * DEGTORAD) * Math.Cos(theta * DEGTORAD);
d = Math.Acos(d);
d *= RADTODEG;
d *= 60 * 1.1515;
d *= 1.609344;
return d.Equals(double.NaN) ? 0.0 : d;
}
} |
Partager