PostGIS  2.4.9dev-r@@SVN_REVISION@@

## ◆ sphere_signed_area()

 static double sphere_signed_area ( const GEOGRAPHIC_POINT * a, const GEOGRAPHIC_POINT * b, const GEOGRAPHIC_POINT * c )
static

Computes the spherical area of a triangle.

If C is to the left of A/B, the area is negative. If C is to the right of A/B, the area is positive.

Parameters
 a The first triangle vertex. b The second triangle vertex. c The last triangle vertex.
Returns

Definition at line 737 of file lwgeodetic.c.

Referenced by ptarray_area_sphere().

738 {
739  double angle_a, angle_b, angle_c;
741  int side;
742  GEOGRAPHIC_EDGE e;
743
744  angle_a = sphere_angle(b,a,c);
745  angle_b = sphere_angle(a,b,c);
746  angle_c = sphere_angle(b,c,a);
747
748  area_radians = angle_a + angle_b + angle_c - M_PI;
749
750  /* What's the direction of the B/C edge? */
751  e.start = *a;
752  e.end = *b;
753  side = edge_point_side(&e, c);
754
755  /* Co-linear points implies no area */
756  if ( side == 0 )
757  return 0.0;
758
759  /* Add the sign to the area */
761 }
Two-point great circle segment from a to b.
Definition: lwgeodetic.h:61
static double sphere_angle(const GEOGRAPHIC_POINT *a, const GEOGRAPHIC_POINT *b, const GEOGRAPHIC_POINT *c)
Returns the angle in radians at point B of the triangle formed by A-B-C.
Definition: lwgeodetic.c:717
GEOGRAPHIC_POINT start
Definition: lwgeodetic.h:63
GEOGRAPHIC_POINT end
Definition: lwgeodetic.h:64
static int edge_point_side(const GEOGRAPHIC_EDGE *e, const GEOGRAPHIC_POINT *p)
Returns -1 if the point is to the left of the plane formed by the edge, 1 if the point is to the righ...
Definition: lwgeodetic.c:690
Here is the call graph for this function: Here is the caller graph for this function: 