From: Jarkko Hietaniemi Date: Wed, 6 Jan 1999 13:18:56 +0000 (+0000) Subject: Enhance the great_circle_distance() documentation. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=4b0d1da893c6081aebff9301fa8ba1d48051e512;p=p5sagit%2Fp5-mst-13.2.git Enhance the great_circle_distance() documentation. p4raw-id: //depot/cfgperl@2575 --- diff --git a/lib/Math/Trig.pm b/lib/Math/Trig.pm index b7b5d5d..b021739 100644 --- a/lib/Math/Trig.pm +++ b/lib/Math/Trig.pm @@ -314,9 +314,11 @@ known as the I coordinate. The angle in the I-plane coordinate. The angle from the I-axis is B, also known as the I coordinate. The `North Pole' is therefore I<0, 0, rho>, and the `Bay of Guinea' (think of the missing big chunk of Africa) I<0, -pi/2, rho>. +pi/2, rho>. In geographical terms I is latitude (northward +positive, southward negative) and I is longitude (eastward +positive, westward negative). -B: some texts define I and I the other way round, +B: some texts define I and I the other way round, some texts define the I to start from the horizontal plane, some texts use I in place of I. @@ -374,13 +376,24 @@ by importing the C function: use Math::Trig 'great_circle_distance' - $distance = great_circle_distance($theta0, $phi0, $theta1, $phi, [, $rho]); + $distance = great_circle_distance($theta0, $phi0, $theta1, $phi1, [, $rho]); The I is the shortest distance between two points on a sphere. The distance is in C<$rho> units. The C<$rho> is optional, it defaults to 1 (the unit sphere), therefore the distance defaults to radians. +If you think geographically the I are longitudes: zero at the +Greenwhich meridian, eastward positive, westward negative--and the +I are latitudes: zero at North Pole, northward positive, +southward negative. B: this formula thinks in mathematics, not +geographically: the I zero is at the Nort Pole, not on the +west coast of Africa (Bay of Guinea). You need to subtract your +geographical coordinates from I (also known as 90 degrees). + + $distance = great_circle_distance($lon0, pi/2 - $lat0, + $lon1, pi/2 - $lat1, $rho); + =head1 EXAMPLES To calculate the distance between London (51.3N 0.5W) and Tokyo (35.7N @@ -394,8 +407,8 @@ To calculate the distance between London (51.3N 0.5W) and Tokyo (35.7N $km = great_circle_distance(@L, @T, 6378); -The answer may be off by up to 0.3% because of the irregular (slightly -aspherical) form of the Earth. +The answer may be off by few percentages because of the irregular +(slightly aspherical) form of the Earth. =head1 BUGS