2D constrained Delaunay triangulation library
Go to file
Martin Dobias e66d045060 Fix #11 - regression causing crash when abs(p1.y - p2.y) < 1e10 (#12)
This reverts commit e0ba327ed8.

While the orignal commit silences a compiler warning, it introduces incorrect
behavior in Edge constructor that causes crash later during triangulation.

See #11 for an example of a simple polygon that would cause crash
2020-01-20 10:19:20 +01:00
.vscode Add tasks.json for VS Code 2018-09-11 13:02:47 +02:00
poly2tri Fix #11 - regression causing crash when abs(p1.y - p2.y) < 1e10 (#12) 2020-01-20 10:19:20 +01:00
testbed Update project URL and copyright year 2018-09-11 12:53:31 +02:00
unittest Add missing include for GCC 9.1 2019-06-11 12:06:01 +02:00
.gitignore Update waf to 2.0.19 2019-11-30 14:03:43 +01:00
AUTHORS modified Authors file 2010-01-30 13:10:18 -05:00
azure-pipelines.yml Set up CI with Azure Pipelines (#7) 2019-01-25 00:20:39 +01:00
CMakeLists.txt Add simple CMakeLists.txt 2018-08-13 14:46:34 +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 new function Triangle::CircumcicleContains 2019-02-21 14:34:37 +01:00
README.md Make example commands runnable from project dir 2014-08-12 22:13:13 +02:00
waf Update waf to 2.0.19 2019-11-30 14:03:43 +01:00
wscript Update waf to 1.8.20 2016-04-13 17:56:42 +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)

Testbed:

  • gcc
  • OpenGL
  • GLFW
  • Python

waf is used to compile the testbed. A waf script (86kb) is included in the repositoty.

Building the Testbed

Posix/MSYS environment:

./waf configure
./waf build

Windows command line:

python waf configure
python waf build

Running the Examples

Load data points from a file:

p2t <filename> <center_x> <center_y> <zoom>

Random distribution of points inside a consrained box:

p2t random <num_points> <box_radius> <zoom>

Examples:

./build/p2t testbed/data/dude.dat 300 500 2
./build/p2t testbed/data/nazca_monkey.dat 0 0 9

./build/p2t random 10 100 5.0
./build/p2t random 1000 20000 0.025