mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-13 07:45:39 +07:00
add pnpoly.h module
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -52,3 +52,6 @@
|
||||
[submodule "modules/box2d"]
|
||||
path = modules/box2d
|
||||
url = https://github.com/erincatto/box2d
|
||||
[submodule "modules/pnpoly.h"]
|
||||
path = modules/pnpoly.h
|
||||
url = https://github.com/BlackMATov/pnpoly.h
|
||||
|
||||
1
modules/pnpoly.h
Submodule
1
modules/pnpoly.h
Submodule
Submodule modules/pnpoly.h added at 6a55491c4c
@@ -16,5 +16,6 @@ cloc \
|
||||
$SCRIPT_DIR/../modules/enum.hpp/untests \
|
||||
$SCRIPT_DIR/../modules/flat.hpp/headers \
|
||||
$SCRIPT_DIR/../modules/flat.hpp/untests \
|
||||
$SCRIPT_DIR/../modules/pnpoly.h \
|
||||
$SCRIPT_DIR/../modules/promise.hpp/headers \
|
||||
$SCRIPT_DIR/../modules/promise.hpp/untests
|
||||
|
||||
@@ -8,4 +8,5 @@ cloc \
|
||||
$SCRIPT_DIR/../modules/ecs.hpp/headers \
|
||||
$SCRIPT_DIR/../modules/enum.hpp/headers \
|
||||
$SCRIPT_DIR/../modules/flat.hpp/headers \
|
||||
$SCRIPT_DIR/../modules/pnpoly.h \
|
||||
$SCRIPT_DIR/../modules/promise.hpp/headers
|
||||
|
||||
@@ -10,5 +10,6 @@ cloc \
|
||||
$SCRIPT_DIR/../modules/enum.hpp/untests \
|
||||
$SCRIPT_DIR/../modules/flat.hpp/headers \
|
||||
$SCRIPT_DIR/../modules/flat.hpp/untests \
|
||||
$SCRIPT_DIR/../modules/pnpoly.h \
|
||||
$SCRIPT_DIR/../modules/promise.hpp/headers \
|
||||
$SCRIPT_DIR/../modules/promise.hpp/untests
|
||||
|
||||
@@ -105,6 +105,9 @@ cp -fv $MODULES_DIR/miniz/miniz_tinfl.h $SOURCES_RDPARTY_DIR/miniz/miniz_tinfl.h
|
||||
cp -fv $MODULES_DIR/miniz/miniz_zip.c $SOURCES_RDPARTY_DIR/miniz/miniz_zip.c
|
||||
cp -fv $MODULES_DIR/miniz/miniz_zip.h $SOURCES_RDPARTY_DIR/miniz/miniz_zip.h
|
||||
|
||||
mkdir -p $SOURCES_RDPARTY_DIR/pnpoly.h
|
||||
cp -fv $MODULES_DIR/pnpoly.h/pnpoly.h $SOURCES_RDPARTY_DIR/pnpoly.h/pnpoly.h
|
||||
|
||||
mkdir -p $HEADERS_RDPARTY_DIR/pugixml
|
||||
cp -rfv $MODULES_DIR/pugixml/src/. $HEADERS_RDPARTY_DIR/pugixml/
|
||||
|
||||
|
||||
77
sources/3rdparty/pnpoly.h/pnpoly.h
vendored
Normal file
77
sources/3rdparty/pnpoly.h/pnpoly.h
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* PNPOLY_INCLUDE_H
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef PNPOLY_INCLUDE_H
|
||||
#define PNPOLY_INCLUDE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef PNPOLY_DEF
|
||||
# ifdef PNPOLY_STATIC
|
||||
# define PNPOLY_DEF static
|
||||
# else
|
||||
# define PNPOLY_DEF extern
|
||||
# endif
|
||||
#endif
|
||||
|
||||
PNPOLY_DEF int pnpoly(int nvert, const float *vertx, const float *verty, float testx, float testy);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // PNPOLY_INCLUDE_H
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* PNPOLY_IMPLEMENTATION
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef PNPOLY_IMPLEMENTATION
|
||||
|
||||
PNPOLY_DEF int pnpoly(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;
|
||||
}
|
||||
|
||||
#endif // PNPOLY_IMPLEMENTATION
|
||||
|
||||
/*
|
||||
Copyright (c) 1970-2003, Wm. Randolph Franklin
|
||||
Copyright (c) 2020, by Matvey Cherevko (blackmatov@gmail.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimers.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice in
|
||||
the documentation and/or other materials provided with the distribution.
|
||||
3. The name of W. Randolph Franklin may not be used to endorse or promote
|
||||
products derived from this Software without specific prior written permission.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user