update pnpoly module

This commit is contained in:
2020-02-01 03:30:44 +07:00
parent 2493fad386
commit ab1db2c31f
2 changed files with 19 additions and 7 deletions

View File

@@ -19,7 +19,8 @@ extern "C" {
# endif
#endif
PNPOLY_DEF int pnpoly(int nvert, const float *vertx, const float *verty, float testx, float testy);
PNPOLY_DEF int pnpoly_aos(int nvert, const float *verts, float testx, float testy);
PNPOLY_DEF int pnpoly_soa(int nvert, const float *vertx, const float *verty, float testx, float testy);
#ifdef __cplusplus
}
@@ -35,13 +36,24 @@ PNPOLY_DEF int pnpoly(int nvert, const float *vertx, const float *verty, float t
#ifdef PNPOLY_IMPLEMENTATION
PNPOLY_DEF int pnpoly(int nvert, const float *vertx, const float *verty, float testx, float testy)
{
PNPOLY_DEF int pnpoly_aos(int nvert, const float *verts, float testx, float testy) {
int i, j, c = 0;
for (i = 0, j = nvert-1; i < nvert; j = i++) {
if ( ((verty[i]>testy) != (verty[j]>testy)) &&
(testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j]-verty[i]) + vertx[i]) )
for ( i = 0, j = nvert - 1; i < nvert; j = i++ ) {
if ( ((verts[i*2+1] > testy) != (verts[j*2+1] > testy)) &&
(testx < (verts[j*2] - verts[i*2]) * (testy - verts[i*2+1]) / (verts[j*2+1] - verts[i*2+1]) + verts[i*2]) ) {
c = !c;
}
}
return c;
}
PNPOLY_DEF int pnpoly_soa(int nvert, const float *vertx, const float *verty, float testx, float testy) {
int i, j, c = 0;
for ( i = 0, j = nvert - 1; i < nvert; j = i++ ) {
if ( ((verty[i] > testy) != (verty[j] > testy)) &&
(testx < (vertx[j] - vertx[i]) * (testy - verty[i]) / (verty[j] - verty[i]) + vertx[i]) ) {
c = !c;
}
}
return c;
}