PostGIS  2.3.8dev-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 706 of file lwgeodetic.c.

Referenced by ptarray_area_sphere().

707 {
708  double angle_a, angle_b, angle_c;
710  int side;
711  GEOGRAPHIC_EDGE e;
712
713  angle_a = sphere_angle(b,a,c);
714  angle_b = sphere_angle(a,b,c);
715  angle_c = sphere_angle(b,c,a);
716
717  area_radians = angle_a + angle_b + angle_c - M_PI;
718
719  /* What's the direction of the B/C edge? */
720  e.start = *a;
721  e.end = *b;
722  side = edge_point_side(&e, c);
723
724  /* Co-linear points implies no area */
725  if ( side == 0 )
726  return 0.0;
727
728  /* Add the sign to the area */
730 }
Two-point great circle segment from a to b.
Definition: lwgeodetic.h:56
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:686
GEOGRAPHIC_POINT start
Definition: lwgeodetic.h:58
GEOGRAPHIC_POINT end
Definition: lwgeodetic.h:59
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:659
Here is the call graph for this function:
Here is the caller graph for this function: