Mega Code Archive

 
Categories / C# / Development Class
 

Distance Util

using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace TrailMap.Utils {     public class DistanceUtil     {         #region Singlton         private static DistanceUtil m_inst = null;         public static DistanceUtil Inst         {             get             {                 if (m_inst == null)                 {                     m_inst = new DistanceUtil();                 }                 return m_inst;             }         }          #endregion         public double Distance(double lat1, double lon1, double lat2, double lon2, char unit)         {             double theta = lon1 - lon2;             double dist = Math.Sin(deg2rad(lat1)) * Math.Sin(deg2rad(lat2)) + Math.Cos(deg2rad(lat1)) * Math.Cos(deg2rad(lat2)) * Math.Cos(deg2rad(theta));             dist = Math.Acos(dist);             dist = rad2deg(dist);             dist = dist * 60 * 1.1515;             if (unit == 'K')             {                 dist = dist * 1.609344;             }             else if (unit == 'N')             {                 dist = dist * 0.8684;             }             if (dist > Double.MinValue && dist < Double.MaxValue)             {                 return (dist);             }             else             {                 return 0.0;             }         }         //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::         //::  This function converts decimal degrees to radians             :::         //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::         private double deg2rad(double deg)         {             return (deg * Math.PI / 180.0);         }         //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::         //::  This function converts radians to decimal degrees             :::         //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::         private double rad2deg(double rad)         {             return (rad / Math.PI * 180.0);         }     } }