blob: a95b8711be8fcab94b67d81aa08a144e85c0df38 [file] [log] [blame]
#pragma once
#include <vector>
#include <exception>
#include <deque>
#include <memory>
struct DelaunatorPoint {
long int i;
double x;
double y;
long int t;
long int prev;
long int next;
bool removed;
};
class Delaunator{
public:
Delaunator(std::vector<double> in_coords);
std::vector<unsigned long int> triangles;
std::vector<long int> halfedges;
std::vector<double> coords;
private:
double m_center_x;
double m_center_y;
long int m_hash_size;
std::vector<int> m_hash;
std::vector<DelaunatorPoint> m_hull;
long int insert_node(long int i);
long int insert_node(long int i, long int prev);
long int hash_key(double x, double y);
void hash_edge(long int e);
long int add_triangle(
long int i0, long int i1, long int i2,
long int a, long int b, long int c
);
void link(long int a, long int b);
long int legalize(long int a);
long int remove_node(long int node);
};