Page 1 of 1

Haversine Formula for Rosetta

Posted: Tue Jan 03, 2017 10:24 pm
by GeorgeMcGinn
Here is some code for the Rosetta project.

This function calculates the distance between two points using their Latitude and Longitude.

This is close to the ASP sample, but adapted for SmartBASIC.

George.

Code: Select all

'*** 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=Distance(Lat1,Lon1,Lat2,Lon2,Unit$)

PRINT "The Distance From Venice, FL to Sarasota, FL in Miles is: "&Result

DEF Distance(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

Re: Haversine Formula for Rosetta

Posted: Wed Jan 04, 2017 12:22 am
by sarossell
Wow. You made that look easy. :)

Re: Haversine Formula for Rosetta

Posted: Wed Jan 04, 2017 12:48 am
by GeorgeMcGinn
There are a lot of samples in other languages.

Only found 3 (including ASP, which is VBScript) in a BASIC-dialect.

Since I need a function to calculate where the nearest city is using current GPS and a lookup table, I needed to be able to do this calculation.

Since I got 10 examples to work off of from Rosetta and others, I figured I would give back as well.

Thanks – George.
sarossell wrote:Wow. You made that look easy. :)

Re: Haversine Formula for Rosetta

Posted: Wed Jan 04, 2017 1:17 pm
by Henko
See also function "geo_distance()" in matlib (library section)