remove node_modules
7 files changed
tree: dfdc295101ad23d4411c526b74d19b61d4abb833
  1. generate-reference-triangles/
  2. src/
  3. test-files/
  4. .gitignore
  5. CMakeLists.txt
  6. CONTRIBUTING.md
  7. fetch-includes.sh
  8. LICENSE
  9. README.md
  10. 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.

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.h"
#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(move(coords));

    for(long int 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 src/triangulate.cpp

TODO

  • Benchmarks
  • Unit tests