28 lines
756 B
Plaintext
28 lines
756 B
Plaintext
function radians n
|
||
return n * (3.1415926 / 180)
|
||
end radians
|
||
|
||
function haversine lat1, lng1, lat2, lng2
|
||
local radiusEarth
|
||
local lat3, lng3
|
||
local lat1Rad, lat2Rad, lat3Rad
|
||
local lngRad1, lngRad2, lngRad3
|
||
local haver
|
||
put 6372.8 into radiusEarth
|
||
put (lat2 - lat1) into lat3
|
||
put (lng2 - lng1) into lng3
|
||
put radians(lat1) into lat1Rad
|
||
put radians(lat2) into lat2Rad
|
||
put radians(lat3) into lat3Rad
|
||
put radians(lng1) into lngRad1
|
||
put radians(lng2) into lngRad2
|
||
put radians(lng3) into lngRad3
|
||
|
||
put (sin(lat3Rad/2.0)^2) + (cos(lat1Rad)) \
|
||
* (cos(lat2Rad)) \
|
||
* (sin(lngRad3/2.0)^2) \
|
||
into haver
|
||
return (radiusEarth * (2.0 * asin(sqrt(haver))))
|
||
|
||
end haversine
|