Useful when programming GPS coordinates and you need to know how far you are from your destination, or to calculate the distance between two cities, as in the code wrapping this function.
The function calculates Kilometers, but has the option (passed as UNIT$) to calculate in Miles or Nautical Miles.
George.
Code: Select all
'*** Haversine Function
'*** George McGinn, January 2017
'*** LAT/LONG For Venice, FL
Lat1=27.07
Lon1=-82.44
'*** LAT/LONG For Sarasota, FL
Lat2=27.40   
Lon2=-82.55
'*** Units: K=kilometers  M=miles  N=nautical miles
Unit$ = "M"	
Result=Haversine(Lat1,Lon1,Lat2,Lon2,Unit$)
PRINT "The Distance From Venice, FL to Sarasota, FL in Miles is: "&Result
DEF Haversine(Lat1,Lon1,Lat2,Lon2,Unit$)
    PI=3.14159265358979323846
    Radius=6378.137
    Lat1=(Lat1*PI/180)
    Lon1=(Lon1*PI/180)
    Lat2=(Lat2*PI/180)
    Lon2=(Lon2*PI/180)
    DLon=Lon1-Lon2
    Answer=ACOS(SIN(Lat1)*SIN(Lat2)+COS(Lat1)*COS(Lat2)*COS(DLon))*Radius
    IF UNIT$="M" THEN Answer=Answer*0.621371192
    IF UNIT$="N" THEN Answer=Answer*0.539956803
  RETURN Answer
ENDDEF

