PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ edge_point_side()

static int edge_point_side ( const GEOGRAPHIC_EDGE e,
const GEOGRAPHIC_POINT p 
)
static

Returns -1 if the point is to the left of the plane formed by the edge, 1 if the point is to the right, and 0 if the point is on the plane.

Definition at line 694 of file lwgeodetic.c.

695{
696 POINT3D normal, pt;
697 double w;
698 /* Normal to the plane defined by e */
699 robust_cross_product(&(e->start), &(e->end), &normal);
700 normalize(&normal);
701 geog2cart(p, &pt);
702 /* We expect the dot product of with normal with any vector in the plane to be zero */
703 w = dot_product(&normal, &pt);
704 LWDEBUGF(4,"dot product %.9g",w);
705 if ( FP_IS_ZERO(w) )
706 {
707 LWDEBUG(4, "point is on plane (dot product is zero)");
708 return 0;
709 }
710
711 if ( w < 0 )
712 return -1;
713 else
714 return 1;
715}
static char * w
Definition cu_out_twkb.c:25
#define FP_IS_ZERO(A)
void normalize(POINT3D *p)
Normalize to a unit vector.
Definition lwgeodetic.c:615
void robust_cross_product(const GEOGRAPHIC_POINT *p, const GEOGRAPHIC_POINT *q, POINT3D *a)
Computes the cross product of two vectors using their lat, lng representations.
Definition lwgeodetic.c:634
static double dot_product(const POINT3D *p1, const POINT3D *p2)
Convert cartesian coordinates on unit sphere to lon/lat coordinates static void cart2ll(const POINT3D...
Definition lwgeodetic.c:446
void geog2cart(const GEOGRAPHIC_POINT *g, POINT3D *p)
Convert spherical coordinates to cartesian coordinates on unit sphere.
Definition lwgeodetic.c:404
#define LWDEBUG(level, msg)
Definition lwgeom_log.h:101
#define LWDEBUGF(level, msg,...)
Definition lwgeom_log.h:106
GEOGRAPHIC_POINT start
Definition lwgeodetic.h:64
GEOGRAPHIC_POINT end
Definition lwgeodetic.h:65

References dot_product(), GEOGRAPHIC_EDGE::end, FP_IS_ZERO, geog2cart(), LWDEBUG, LWDEBUGF, normalize(), robust_cross_product(), GEOGRAPHIC_EDGE::start, and w.

Referenced by edge_point_on_plane().

Here is the call graph for this function:
Here is the caller graph for this function: