A friend of mine turned me on to this 10 years ago. This is the Haversine formula. It assumes that the earth is sphere and is not very accurate for very small distances. I have not tried to use the Vincenty's formula that does better. For general purposes the HF should be sufficient.
Just give me the credit for LC implementation of a friends of mines routine. Although I understand how it works the real credit goes to Don Josef de Mendoza y Rios in 1796. The girls and boys doing math in that period really set the stage. This brought me back to my CGI days when I was patting myself on the back when I self learned(with a friends help after reading the Kreyszig) how to move points in space and calculate lighting. I then self reflected and realized that I was just putting together the pieces of math that these folks created out of thin air. I still felt like I accomplished something but very much smaller the scheme of things. Ralph DiMola IT Director Evergreen Information Services rdim...@evergreeninfo.net -----Original Message----- From: use-livecode [mailto:use-livecode-boun...@lists.runrev.com] On Behalf Of Bob Sneidar via use-livecode Sent: Friday, April 03, 2020 5:31 PM To: How to use LiveCode Cc: Bob Sneidar Subject: Re: Ralph, this is brilliant. I remember trying to do something similar years ago, and giving up because I didn't know how to do the math. I suck at math, or rather I am too lazy and impatient to work the problem. Bob S > On Apr 3, 2020, at 14:27 , Ralph DiMola via use-livecode <use-livecode@lists.runrev.com> wrote: > > Graham, > > This my distance calculation for what it's worth. > > Function distance lat1, lon1, lat2, lon2, unit > -- Calculate Distance between to points > -- > --lat1, lon1, lat2, lon2 are in deg.fractionalDegrees > -- Unit > -- if empty then miles > -- K = kilometers > -- N = nautical miles > local theta > local dist > > Put lon1 - lon2 into theta > put Sin(deg2rad(lat1)) * Sin(deg2rad(lat2)) + Cos(deg2rad(lat1)) * Cos(deg2rad(lat2)) * Cos(deg2rad(theta)) into dist > > put Acos(dist) into dist > put rad2deg(dist) into dist > put dist * 60 * 1.1515 into dist > > switch unit > case "K" > put dist * 1.609344 into dist > case "N" > put dist * 0.8684 into dist > end switch > > Return dist > > End distance > > > Function rad2deg rad > Return rad / PI * 180.0 > end rad2deg > > > Ralph DiMola > IT Director > Evergreen Information Services > rdim...@evergreeninfo.net _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode