Livecode Precision or me?

Bob Sneidar bobsneidar at iotecdigital.com
Thu Feb 5 17:02:22 CET 2015


I was just about to tell you what the problem was! ;-)

Bob S


> On Jan 31, 2015, at 12:42 , Michael Doub <mikedoub at gmail.com> wrote:
> 
> Of coarse it was me.  And as you would expect, I found it right after sending the mail to the list.
> 
> put lon2 - lon2 into dlon should be put lon2 - lon1 into dlon
> 
> Sorry for the junk mail.
> 
> -= Mike
> 
> 
> 
> On 1/31/15 3:33 PM, Michael Doub wrote:
>> I am trying to covert the javascript that computes distance based on longitude and latitude from this page: http://andrew.hedges.name/experiments/haversine/.
>> 
>> The sites javascript is returning 0.341 miles and 0.549 km
>> Livecode is returning 0.097 miles and 0.157
>> 
>> I have been staring at this for a while.  Does anyone see my mistake or is there a precision issue tripping me up?
>> 
>> Thanks
>>   Mike
>> 
>> 
>> 
>> on doit
>>   answer __latLongDist (38.898556, -77.037852, 38.897147, -77.043934)
>> end doit
>> 
>> 
>> function __latLongDist t1, n1, t2, n2 , mk
>>   put 3961 into Rm -- mean radius of the earth (miles) at 39 degrees from the equator
>>   put 6373 into Rk  -- mean radius of the earth (km) at 39 degrees from the equator
>>   put t1 * pi/180 into lat1  -- convert degrees to radians
>>   put n1 * pi/180 into lon1
>>   put t2 * pi/180 into lat2
>>   put n2 * pi/180 into lon2
>>   put lat2 - lat1 into dlat
>>   put lon2 - lon2 into dlon
>>   put (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2 into aa
>>   put 2 * atan2( sqrt(aa), sqrt(1-aa) ) into cc
>>   put cc * Rm into Dm
>>   put cc * Rk into Dk
>>   return round (Dm,3), round(Dk,3)
>> end __latLongDist
>> 
>> 
>> 
>> /* main function */
>>    function findDistance(frm) {
>>        var t1, n1, t2, n2, lat1, lon1, lat2, lon2, dlat, dlon, a, c, dm, dk, mi, km;
>> 
>>        // get values for lat1, lon1, lat2, and lon2
>>        t1 = frm.lat1.value;
>>        n1 = frm.lon1.value;
>>        t2 = frm.lat2.value;
>>        n2 = frm.lon2.value;
>> 
>>        // convert coordinates to radians
>>        lat1 = deg2rad(t1);
>>        lon1 = deg2rad(n1);
>>        lat2 = deg2rad(t2);
>>        lon2 = deg2rad(n2);
>> 
>>        // find the differences between the coordinates
>>        dlat = lat2 - lat1;
>>        dlon = lon2 - lon1;
>> 
>>        // here's the heavy lifting
>>        a  = Math.pow(Math.sin(dlat/2),2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(dlon/2),2);
>>        c  = 2 * Math.atan2(Math.sqrt(a),Math.sqrt(1-a)); // great circle distance in radians
>>        dm = c * Rm; // great circle distance in miles
>>        dk = c * Rk; // great circle distance in km
>> 
>>        // round the results down to the nearest 1/1000
>>        mi = round(dm);
>>        km = round(dk);
>> 
>>        // display the result
>>        frm.mi.value = mi;
>>        frm.km.value = km;
>>    }
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode




More information about the use-livecode mailing list