PostGIS  3.7.0dev-r@@SVN_REVISION@@

◆ itree_point_in_ring()

static IntervalTreeResult itree_point_in_ring ( const IntervalTree itree,
uint32_t  ringNumber,
const POINT2D pt 
)
static

Definition at line 435 of file intervaltree.c.

436 {
437  int winding_number = 0;
438  const IntervalTreeNode *node = itree->indexes[ringNumber];
439  const POINTARRAY *pa = itree->indexArrays[ringNumber];
440  IntervalTreeResult rslt = itree_point_in_ring_recursive(node, pa, pt, &winding_number);
441 
442  /* Boundary case is separate from winding number */
443  if (rslt == ITREE_BOUNDARY) return rslt;
444 
445  /* Not boundary, so evaluate winding number */
446  if (winding_number == 0)
447  return ITREE_OUTSIDE;
448  else
449  return ITREE_INSIDE;
450 }
static IntervalTreeResult itree_point_in_ring_recursive(const IntervalTreeNode *node, const POINTARRAY *pa, const POINT2D *pt, int *winding_number)
Definition: intervaltree.c:365
IntervalTreeResult
Definition: intervaltree.h:32
@ ITREE_BOUNDARY
Definition: intervaltree.h:34
@ ITREE_INSIDE
Definition: intervaltree.h:33
@ ITREE_OUTSIDE
Definition: intervaltree.h:35
struct IntervalTreeNode ** indexes
Definition: intervaltree.h:59
POINTARRAY ** indexArrays
Definition: intervaltree.h:60

References IntervalTree::indexArrays, IntervalTree::indexes, ITREE_BOUNDARY, ITREE_INSIDE, ITREE_OUTSIDE, and itree_point_in_ring_recursive().

Referenced by itree_point_in_multipolygon().

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