mirror of
https://github.com/jhasse/poly2tri.git
synced 2024-11-05 13:59:53 +01:00
2D constrained Delaunay triangulation library
.github/workflows | ||
.vscode | ||
doc | ||
poly2tri | ||
testbed | ||
unittest | ||
.clang-format | ||
.gitignore | ||
AUTHORS | ||
CMakeLists.txt | ||
LICENSE | ||
meson.build | ||
README.md |
Since there are no Input validation of the data given for triangulation you need to think about this. Poly2Tri does not support repeat points within epsilon.
- If you have a cyclic function that generates random points make sure you don't add the same coordinate twice.
- If you are given input and aren't sure same point exist twice you need to check for this yourself.
- Only simple polygons are supported. You may add holes or interior Steiner points
- Interior holes must not touch other holes, nor touch the polyline boundary
- Use the library in this order:
- Initialize CDT with a simple polyline (this defines the constrained edges)
- Add holes if necessary (also simple polylines)
- Add Steiner points
- Triangulate
Make sure you understand the preceding notice before posting an issue. If you have an issue not covered by the above, include your data-set with the problem. The only easy day was yesterday; have a nice day.
TESTBED INSTALLATION GUIDE
Dependencies
Core poly2tri lib:
- Standard Template Library (STL)
Unit tests:
- Boost (filesystem, test framework)
Testbed:
- OpenGL
- GLFW
Build the library
With the ninja build system installed:
mkdir build && cd build
cmake -GNinja ..
cmake --build .
Build and run with unit tests
With the ninja build system:
mkdir build && cd build
cmake -GNinja -DP2T_BUILD_TESTS=ON ..
cmake --build .
ctest --output-on-failure
Build with the testbed
mkdir build && cd build
cmake -GNinja -DP2T_BUILD_TESTBED=ON ..
cmake --build .
Running the Examples
Load data points from a file:
build/testbed/p2t <filename> <center_x> <center_y> <zoom>
Load data points from a file and automatically fit the geometry to the window:
build/testbed/p2t <filename>
Random distribution of points inside a constrained box:
build/testbed/p2t random <num_points> <box_radius> <zoom>
Examples:
build/testbed/p2t testbed/data/dude.dat 350 500 3
build/testbed/p2t testbed/data/nazca_monkey.dat
build/testbed/p2t random 10 100 5.0
build/testbed/p2t random 1000 20000 0.025
References
- Domiter V. and Zalik B. (2008) Sweep‐line algorithm for constrained Delaunay triangulation
- FlipScan by library author Thomas Åhlén