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

◆ ptarray_closest_vertex_2d()

int ptarray_closest_vertex_2d ( const POINTARRAY pa,
const POINT2D qp,
double *  dist 
)
extern
Parameters
pathe subject pointarray
qpthe query point
distoptional output for actual distance from vertex

Definition at line 1485 of file ptarray.c.

1486{
1487 uint32_t t, pn=0;
1488 const POINT2D *p;
1489 double mindist = DBL_MAX;
1490
1491 /* Loop through pointarray looking for nearest segment */
1492 for (t=0; t<pa->npoints; t++)
1493 {
1494 double dist_sqr;
1495 p = getPoint2d_cp(pa, t);
1496 dist_sqr = distance2d_sqr_pt_pt(p, qp);
1497
1498 if (dist_sqr < mindist)
1499 {
1500 mindist = dist_sqr;
1501 pn = t;
1502 if ( mindist == 0 )
1503 {
1504 LWDEBUG(3, "Breaking on mindist=0");
1505 break;
1506 }
1507 }
1508 }
1509 if ( dist ) *dist = sqrt(mindist);
1510 return pn;
1511}
#define LWDEBUG(level, msg)
Definition lwgeom_log.h:101
static double distance2d_sqr_pt_pt(const POINT2D *p1, const POINT2D *p2)
Definition lwinline.h:33
static const POINT2D * getPoint2d_cp(const POINTARRAY *pa, uint32_t n)
Returns a POINT2D pointer into the POINTARRAY serialized_ptlist, suitable for reading from.
Definition lwinline.h:97
uint32_t npoints
Definition liblwgeom.h:427

References distance2d_sqr_pt_pt(), getPoint2d_cp(), LWDEBUG, and POINTARRAY::npoints.

Referenced by test_ptarray_closest_vertex_2d().

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