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

◆ test_ptarray_isccw()

static void test_ptarray_isccw ( void  )
static

Definition at line 274 of file cu_ptarray.c.

275{
276 LWLINE *line;
277 LWPOLY* poly;
278 int ccw;
279
280 /* clockwise rectangle */
281 line = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(0 0,0 10,10 10,10 0, 0 0)"));
282 ccw = ptarray_isccw(line->points);
283 CU_ASSERT_EQUAL(ccw, 0);
284 lwline_free(line);
285
286 /* clockwise triangle */
287 line = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(0 3,20 4,20 3, 0 3)"));
288 ccw = ptarray_isccw(line->points);
289 CU_ASSERT_EQUAL(ccw, 0);
290 lwline_free(line);
291
292 /* counterclockwise triangle */
293 line = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(0 3,20 3,20 4, 0 3)"));
294 ccw = ptarray_isccw(line->points);
295 CU_ASSERT_EQUAL(ccw, 1);
296 lwline_free(line);
297
298 /* counterclockwise narrow ring (see ticket #1302) */
299 line = lwgeom_as_lwline(lwgeom_from_hexwkb("01020000000500000000917E9BA468294100917E9B8AEA284137894120A4682941C976BE9F8AEA2841B39ABE1FA46829415ACCC29F8AEA2841C976BE1FA4682941C976BE9F8AEA284100917E9BA468294100917E9B8AEA2841", LW_PARSER_CHECK_NONE));
300 ccw = ptarray_isccw(line->points);
301 CU_ASSERT_EQUAL(ccw, 1);
302 lwline_free(line);
303
304 /* clockwise narrow ring (see ticket #1302) */
305 line = lwgeom_as_lwline(lwgeom_from_hexwkb("01020000000500000000917E9BA468294100917E9B8AEA2841C976BE1FA4682941C976BE9F8AEA2841B39ABE1FA46829415ACCC29F8AEA284137894120A4682941C976BE9F8AEA284100917E9BA468294100917E9B8AEA2841", LW_PARSER_CHECK_NONE));
306 ccw = ptarray_isccw(line->points);
307 CU_ASSERT_EQUAL(ccw, 0);
308 lwline_free(line);
309
310 /* Clockwise narrow ring (see ticket #1302) */
311 poly = lwgeom_as_lwpoly(lwgeom_from_hexwkb("0103000000010000000500000000917E9BA468294100917E9B8AEA2841C976BE1FA4682941C976BE9F8AEA2841B39ABE1FA46829415ACCC29F8AEA284137894120A4682941C976BE9F8AEA284100917E9BA468294100917E9B8AEA2841", LW_PARSER_CHECK_NONE));
312 ccw = ptarray_isccw(poly->rings[0]);
313 CU_ASSERT_EQUAL(ccw, 0);
314 lwpoly_free(poly);
315}
static LWGEOM * lwgeom_from_text(const char *str)
Definition cu_ptarray.c:24
#define LW_PARSER_CHECK_NONE
Definition liblwgeom.h:2149
LWPOLY * lwgeom_as_lwpoly(const LWGEOM *lwgeom)
Definition lwgeom.c:243
LWGEOM * lwgeom_from_hexwkb(const char *hexwkb, const char check)
Definition lwin_wkb.c:866
LWLINE * lwgeom_as_lwline(const LWGEOM *lwgeom)
Definition lwgeom.c:207
void lwpoly_free(LWPOLY *poly)
Definition lwpoly.c:175
void lwline_free(LWLINE *line)
Definition lwline.c:67
int ptarray_isccw(const POINTARRAY *pa)
Definition ptarray.c:1182
POINTARRAY * points
Definition liblwgeom.h:483
POINTARRAY ** rings
Definition liblwgeom.h:519

References LW_PARSER_CHECK_NONE, lwgeom_as_lwline(), lwgeom_as_lwpoly(), lwgeom_from_hexwkb(), lwgeom_from_text(), lwline_free(), lwpoly_free(), LWLINE::points, ptarray_isccw(), and LWPOLY::rings.

Referenced by ptarray_suite_setup().

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