RosettaCodeData/Task/Haversine-formula/Seed7/haversine-formula.seed7
Ingy döt Net 6f050a029e update
2013-06-05 21:47:54 +00:00

26 lines
1.1 KiB
Text

$ include "seed7_05.s7i";
include "float.s7i";
include "math.s7i";
const func float: greatCircleDistance (in float: latitude1, in float: longitude1,
in float: latitude2, in float: longitude2) is func
result
var float: distance is 0.0;
local
const float: EarthRadius is 6372.8; # Average great-elliptic or great-circle radius in kilometers
begin
distance := 2.0 * EarthRadius * asin(sqrt(sin(0.5 * (latitude2 - latitude1)) ** 2 +
cos(latitude1) * cos(latitude2) *
sin(0.5 * (longitude2 - longitude1)) ** 2));
end func;
const func float: degToRad (in float: degrees) is
return degrees * 0.017453292519943295769236907684886127;
const proc: main is func
begin
writeln("Distance in kilometers between BNA and LAX");
writeln(greatCircleDistance(degToRad(36.12), degToRad(-86.67), # Nashville International Airport (BNA)
degToRad(33.94), degToRad(-118.4)) # Los Angeles International Airport (LAX)
digits 2);
end func;