remove redundant CI jobs
6 files changed
tree: f5346f45033a371fb56745aa4f5a0956a58cfee5
  1. bench/
  2. cmake/
  3. examples/
  4. generate-reference-triangles/
  5. include/
  6. scripts/
  7. test/
  8. .gitignore
  9. .travis.yml
  10. CMakeLists.txt
  11. CONTRIBUTING.md
  12. LICENSE
  13. Makefile
  14. README.md
  15. THIRD-PARTY-NOTICES
README.md

delaunator-cpp

A really fast C++ library for Delaunay triangulation of 2D points.

delaunator-cpp is a C++ port from https://github.com/mapbox/delaunator a JavaScript implementation of very fast 2D Delaunay algorithm.

Build Status badge

Features

  • Probably the fastest C++ open source 2D Delaunay implementation
  • Roughly 3 times faster then JS version.
  • Example showing triangulation of GeoJson points

Usage

#include <delaunator.hpp>
#include <cstdio>

//...
int main(int, char* argv[]) {
    //...
    std::vector<double> coords = {/* x0, y0, x1, y1, ... */};

    //triangulation happens here
    //note moving points to constructor
    delaunator::Delaunator delaunator(coords);

    for(std::size_t i = 0; i < delaunator.triangles.size(); i+=3) {
        printf(
            "Triangle points: [[%f, %f], [%f, %f], [%f, %f]]\n",
            delaunator.coords[2 * delaunator.triangles[i]],         //tx0
            delaunator.coords[2 * delaunator.triangles[i] + 1],     //ty0
            delaunator.coords[2 * delaunator.triangles[i + 1]],     //tx1
            delaunator.coords[2 * delaunator.triangles[i + 1] + 1], //ty1
            delaunator.coords[2 * delaunator.triangles[i + 2]],     //tx2
            delaunator.coords[2 * delaunator.triangles[i + 2] + 1], //ty2
        )
    }
}

For full example see examples/triangulate/main.cpp

TODO

  • Benchmarks
  • Unit tests