26 lines
1.1 KiB
Text
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;
|