Returns a modified POINTARRAY so that no segment is longer than the given distance (computed using 2d).
Every input point is kept. Z and M values for added points (if needed) are set to 0.
Definition at line 414 of file ptarray.c.
424 pbuf.
x = pbuf.
y = pbuf.
z = pbuf.
m = 0;
435 while (ipoff<ipa->npoints)
447 POINT4D *p1ptr=&p1, *p2ptr=&p2;
455 pbuf.
x = p1.
x + (p2.
x-p1.
x)/segdist * dist;
456 pbuf.
y = p1.
y + (p2.
y-p1.
y)/segdist * dist;
458 pbuf.
z = p1.
z + (p2.
z-p1.
z)/segdist * dist;
460 pbuf.
m = p1.
m + (p2.
m-p1.
m)/segdist * dist;
double distance2d_pt_pt(const POINT2D *p1, const POINT2D *p2)
#define FLAGS_GET_Z(flags)
Macros for manipulating the 'flags' byte.
#define FLAGS_GET_M(flags)
int getPoint4d_p(const POINTARRAY *pa, uint32_t n, POINT4D *point)
#define LW_TRUE
Return types for functions with status returns.
#define LW_ON_INTERRUPT(x)
POINTARRAY * ptarray_construct_empty(char hasz, char hasm, uint32_t maxpoints)
Create a new POINTARRAY with no points.
void ptarray_free(POINTARRAY *pa)
int ptarray_append_point(POINTARRAY *pa, const POINT4D *pt, int repeated_points)
Append a point to the end of an existing POINTARRAY If allow_duplicate is LW_FALSE,...
References distance2d_pt_pt(), POINTARRAY::flags, FLAGS_GET_M, FLAGS_GET_Z, getPoint4d_p(), LW_FALSE, LW_ON_INTERRUPT, LW_TRUE, POINT4D::m, POINTARRAY::npoints, ptarray_append_point(), ptarray_construct_empty(), ptarray_free(), POINT4D::x, POINT4D::y, and POINT4D::z.
Referenced by lwline_segmentize2d(), and lwpoly_segmentize2d().