I’ve been trying these formulae out, and I’ve been using the info on https://www.movable-type.co.uk/scripts/latlong.html - for my purposes (distances from say 100 metres to up to a few kilometers) I think this works as well as haversine, but maybe not for every kind of measurement. The function gives a result in kilometres starting from coordinates in degrees. Seems to work, but I need to do a bit more work on the (real) ground to convince myself.
function distanceslc lat1,lon1,lat2,lon2 constant k1 = 0.017453 -- that's pi/180 -- This implements the spherical law of cosines, from movable-type.co.uk. Confirmed with his javascript version return acos(sin(lat1*k1) * sin(lat2*k1) + cos(lat1*k1)*cos(lat2*k1)*cos(lon2*k1-lon1*k1))*6371 end distanceslc Graham > On 4 Apr 2020, at 16:47, Ralph DiMola via use-livecode > <use-livecode@lists.runrev.com> wrote: > > 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 _______________________________________________ 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