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