[Proj] Area of a spherical polygon

Mikael Rittri Mikael.Rittri at carmenta.com
Tue Sep 21 04:06:50 EST 2010


Hello Charles,
you wrote:

> * the formula for A applies only if the polygon does not include a pole
>   (if it does, then add +/- pi to the result); 

Don't you mean +/- 2pi ?  

> * I would be interested to know if this formula for S12 is already
>   known.

There is an article

Robert D. Miller, Computing the area of a spherical polygon, 
Graphic Gems IV, chapter II.4, pages 132 - 137.  It is on 
books.google.com, but without pages 135 and 136:

http://books.google.com/books?id=CCqzMm_-WucC&pg=PA132&lpg=PA132&dq=miller+area+spherical+polygon+gems&source=bl&ots=mrnvZ6NJcm&sig=CMg8eaD8dzP5snMaPeCQzgoFWUk&hl=sv&ei=4G-YTKv5GsWZOI-mmZQP&sa=X&oi=book_result&ct=result&resnum=1&ved=0CBQQ6AEwAA#v=onepage&q&f=false

Your formula for S12 does not appear (in any obvious form),
but Miller's method reminds me a little of yours. Instead of 
summing the areas between each segment and the equator, Miller 
sums the areas between each segment and a pole.  I don't know 
how well-conditioned his method is for small polygons. 

Regards,

Mikael Rittri
Carmenta AB
Sweden
www.carmenta.com

-----Original Message-----
From: proj-bounces at lists.maptools.org [mailto:proj-bounces at lists.maptools.org] On Behalf Of Charles Karney
Sent: den 19 september 2010 15:38
To: proj at lists.maptools.org
Cc: deakin at rmit.edu.au; michka at microsoft.com; thomas.meyer at uconn.edu; lsjo at kth.se; Craig.M.Rollins at nga.mil
Subject: [Proj] Area of a spherical polygon

The area of a polygon on a (unit) sphere is given by the spherical excess

  A = 2*pi - sum(exterior angles)

However this is badly conditioned if the polygon is small.  In this case, use

  A = sum S_{i,i+1} over the edges of the polygon

where S12 is the area of the quadrilateral bounded by an edge of the polygon, two meridians, and the equator, i.e., with vertices

  (phi1,lambda1); (phi2,lambda2);
  (0,   lambda1); (0,   lambda2); 

S12 is given by

  tan(S12/2) = tan(lambda12/2) * ( tan(phi1/2) + tan(phi2/2) )
                           / ( 1 + tan(phi1/2) * tan(phi2/2) )
             = tan(lambda12/2) * tanh( (lam(phi1) + lam(phi2))/2 )

where lambda12 = lambda2 - lambda1 and lam(x) is the lambertian (or inverse gudermannian) function

  lam(x) = asinh(tan(x)) = atanh(sin(x)) = 2*atanh(tan(x/2))

Notes:

* the formula for S12 is exact, except that...

* it is indeterminate if an edge is a semi-circle;

* the formula for A applies only if the polygon does not include a pole
  (if it does, then add +/- pi to the result);

* in the limit of small phi and lambda, S12 reduces to the trapezoidal
  formula, S12 = (lambda2 - lambda1) * (phi1 + phi2)/2;

* I derived this result from the equation for the area of a spherical
  triangle in terms of two edges and the included angle given by, e.g.,
  Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).  See
    http://books.google.com/books?id=3uBHAAAAIAAJ&pg=PA71

* I would be interested to know if this formula for S12 is already
  known.

  --Charles

--
Charles Karney <ckarney at sarnoff.com>
Sarnoff Corporation, Princeton, NJ 08543-5300

Tel: +1 609 734 2312
Fax: +1 609 734 2662
_______________________________________________
Proj mailing list
Proj at lists.maptools.org
http://lists.maptools.org/mailman/listinfo/proj


More information about the Proj mailing list