Definition at line 6428 of file lwgeom_topo.c.
6429{
6430 int cn = 0;
6432#ifndef RELAX
6434#endif
6435
6437 v0 = v1;
6439 {
6440 double vt;
6441
6442
6443 if
6444 (
6445
6446 ((v1.
y <= p->
y) && (v2.
y > p->
y))
6447
6448 || ((v1.
y > p->
y) && (v2.
y <= p->
y))
6449 )
6450 {
6451
6452 vt = (double)(p->
y - v1.
y) / (v2.
y - v1.
y);
6453
6454
6455 if (p->
x < v1.
x + vt * (v2.
x - v1.
x))
6456 {
6457
6458 ++cn;
6459 }
6460 }
6461 v1 = v2;
6462 }
6463
6464 LWDEBUGF(3,
"_lwt_EdgeRingCrossingCount returning %d", cn);
6465
6466#ifndef RELAX
6467 if ( memcmp(&v1, &v0,
sizeof(
POINT2D)) )
6468 {
6469 lwerror(
"_lwt_EdgeRingCrossingCount: V[n] != V[0] (%g %g != %g %g)",
6470 v1.
x, v1.
y, v0.
x, v0.
y);
6471 return -1;
6472 }
6473#endif
6474
6475 return cn;
6476}
#define LWDEBUGF(level, msg,...)
void lwerror(const char *fmt,...)
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().