PostGIS  3.7.0dev-r@@SVN_REVISION@@

◆ itree_num_nodes_pointarray()

static uint32_t itree_num_nodes_pointarray ( const POINTARRAY pa)
static

Definition at line 46 of file intervaltree.c.

47 {
48  uint32_t num_nodes = 0;
49  uint32_t level_nodes = 0;
50 
51  /* not a closed polygon */
52  if (!pa || pa->npoints < 4) return 0;
53 
54  /* one leaf node per edge */
55  level_nodes = pa->npoints - 1;
56 
57  while(level_nodes > 1)
58  {
59  uint32_t next_level_nodes = level_nodes / ITREE_MAX_NODES;
60  next_level_nodes += ((level_nodes % ITREE_MAX_NODES) > 0);
61  num_nodes += level_nodes;
62  level_nodes = next_level_nodes;
63  }
64  /* and the root node */
65  return num_nodes + 1;
66 }
#define ITREE_MAX_NODES
Definition: intervaltree.h:29
uint32_t npoints
Definition: liblwgeom.h:427

References ITREE_MAX_NODES, and POINTARRAY::npoints.

Referenced by itree_num_nodes_polygon().

Here is the caller graph for this function: