Definition at line 447 of file lwgeom_topo_polygonizer.c.
448{
449 int cn = 0;
451#ifndef RELAX
453#endif
454
456 v0 = v1;
458 {
459 double vt;
460
461
462 if
463 (
464
465 ((v1.
y <= p->
y) && (v2.
y > p->
y))
466
467 || ((v1.
y > p->
y) && (v2.
y <= p->
y))
468 )
469 {
470
471 vt = (double)(p->
y - v1.
y) / (v2.
y - v1.
y);
472
473
474 if (p->
x < v1.
x + vt * (v2.
x - v1.
x))
475 {
476
477 ++cn;
478 }
479 }
480 v1 = v2;
481 }
482
483 LWDEBUGF(3,
"_lwt_EdgeRingCrossingCount returning %d", cn);
484
485#ifndef RELAX
486 if ( memcmp(&v1, &v0,
sizeof(
POINT2D)) )
487 {
488 lwerror(
"_lwt_EdgeRingCrossingCount: V[n] != V[0] (%g %g != %g %g)",
489 v1.
x, v1.
y, v0.
x, v0.
y);
490 return -1;
491 }
492#endif
493
494 return cn;
495}
#define LWDEBUGF(level, msg,...)
void void lwerror(const char *fmt,...) __attribute__((format(printf
Write a notice out to the error handler.
static int _lwt_EdgeRingIterator_next(LWT_EDGERING_POINT_ITERATOR *it, POINT2D *pt)
References _lwt_EdgeRingIterator_next(), LWDEBUGF, lwerror(), POINT2D::x, and POINT2D::y.
Referenced by _lwt_EdgeRingContainsPoint().