Forgot to add clang tidy and clang format configs
2 files changed
tree: 5471a62d1652f359a0302893172a9189b026e712
  1. bench/
  2. cmake/
  3. examples/
  4. generate-reference-triangles/
  5. include/
  6. scripts/
  7. test/
  8. .clang-format
  9. .clang-tidy
  10. .gitignore
  11. .travis.yml
  12. CMakeLists.txt
  13. CONTRIBUTING.md
  14. fetch-includes.sh
  15. LICENSE
  16. README.md
  17. 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>
using namespace std;
//...
int main(int, char* argv[]) {
    //...
    const vector<double> coords = {/* x0, y0, x1, y1, ... */};

    //triangulation happens here
    //note moving points to constructor
    delaunator::Delaunator delaunator(move(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