2D constrained Delaunay triangulation library
Go to file
2024-02-08 17:16:43 +01:00
.github/workflows GitHub Actions: Update to actions/checkout@v4 2024-02-08 17:16:43 +01:00
.vscode Add debug configurations for VSCode 2020-10-19 18:27:52 +02:00
doc Add references section to README 2020-10-26 20:58:49 +01:00
poly2tri fix invalid UTF-8 2023-12-22 20:06:32 +01:00
testbed Merge pull request #43 from AndriyAndreyev/stability_fixes 2022-05-20 15:46:44 +02:00
unittest Add unittest to check stack overflow crash 2022-05-06 00:52:07 +03:00
.clang-format Add .clang-format 2020-10-19 18:24:46 +02:00
.gitignore Ignore .cache/ 2020-12-17 23:13:20 +01:00
AUTHORS fix invalid UTF-8 2023-12-22 20:06:32 +01:00
CMakeLists.txt Set the API export symbols based on CMake BUILD_SHARED_LIBS 2022-04-23 14:20:20 +02:00
LICENSE Change BSD-3 license formatting a little bit so that GitHub detects it 2018-09-11 13:00:49 +02:00
meson.build Add CMake files for the unit tests 2020-08-27 19:16:17 +02:00
README.md Testbed autozoom feature 2022-05-05 23:43:21 +02:00

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:
    1. Initialize CDT with a simple polyline (this defines the constrained edges)
    2. Add holes if necessary (also simple polylines)
    3. Add Steiner points
    4. 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:

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) Sweepline algorithm for constrained Delaunay triangulation
  • FlipScan by library author Thomas Åhlén

FlipScan