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

◆ test_ptarray_locate_point()

static void test_ptarray_locate_point ( void  )
static

Definition at line 217 of file cu_ptarray.c.

218{
219 LWLINE *line;
220 double loc, dist;
221 POINT4D p, l;
222
223 line = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(0 3,20 4)"));
224
225 p = getPoint4d(line->points, 0);
226 loc = ptarray_locate_point(line->points, &p, &dist, &l);
227 CU_ASSERT_EQUAL(loc, 0);
228 CU_ASSERT_EQUAL(dist, 0.0);
229
230 p = getPoint4d(line->points, 1);
231 loc = ptarray_locate_point(line->points, &p, &dist, &l);
232 CU_ASSERT_EQUAL(loc, 1);
233 CU_ASSERT_EQUAL(dist, 0.0);
234
235 p.x = 21; p.y = 4;
236 loc = ptarray_locate_point(line->points, &p, &dist, NULL);
237 CU_ASSERT_EQUAL(loc, 1);
238 CU_ASSERT_EQUAL(dist, 1.0);
239
240 p.x = 0; p.y = 2;
241 loc = ptarray_locate_point(line->points, &p, &dist, &l);
242 CU_ASSERT_EQUAL(loc, 0);
243 CU_ASSERT_EQUAL(dist, 1.0);
244
245 lwline_free(line);
246 line = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(0 0,20 0,40 0)"));
247
248 p.x = 20; p.y = 0;
249 loc = ptarray_locate_point(line->points, &p, &dist, &l);
250 CU_ASSERT_EQUAL(loc, 0.5);
251 CU_ASSERT_EQUAL(dist, 0.0);
252
253 lwline_free(line);
254 line = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(-40 0,0 0,20 0,40 0)"));
255
256 p.x = 20; p.y = 0;
257 loc = ptarray_locate_point(line->points, &p, &dist, &l);
258 CU_ASSERT_EQUAL(loc, 0.75);
259 CU_ASSERT_EQUAL(dist, 0.0);
260
261 lwline_free(line);
262 line = lwgeom_as_lwline(lwgeom_from_text("LINESTRING M (0 0 0, 10 0 20)"));
263
264 p.x = 5; p.y = 0;
265 loc = ptarray_locate_point(line->points, &p, &dist, &l);
266 CU_ASSERT_EQUAL(loc, 0.5);
267 CU_ASSERT_EQUAL(dist, 0.0);
268 CU_ASSERT_EQUAL(l.m, 10.0);
269
270 lwline_free(line);
271
272}
static LWGEOM * lwgeom_from_text(const char *str)
Definition cu_ptarray.c:24
POINT4D getPoint4d(const POINTARRAY *pa, uint32_t n)
Definition lwgeom_api.c:107
double ptarray_locate_point(const POINTARRAY *pa, const POINT4D *pt, double *dist, POINT4D *p_located)
Definition ptarray.c:1518
LWLINE * lwgeom_as_lwline(const LWGEOM *lwgeom)
Definition lwgeom.c:207
void lwline_free(LWLINE *line)
Definition lwline.c:67
POINTARRAY * points
Definition liblwgeom.h:483
double m
Definition liblwgeom.h:414
double x
Definition liblwgeom.h:414
double y
Definition liblwgeom.h:414

References getPoint4d(), lwgeom_as_lwline(), lwgeom_from_text(), lwline_free(), POINT4D::m, LWLINE::points, ptarray_locate_point(), POINT4D::x, and POINT4D::y.

Referenced by ptarray_suite_setup().

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