Biblioteca de triangulación ligera de Delaunay (para c ++) [cerrado]
-
22-07-2019 - |
Pregunta
Me gustaría jugar con algunas triangulaciones Delaunay (2D), y estoy buscando una biblioteca razonablemente pequeña para trabajar. Soy consciente de CGAL, pero me preguntaba si había algo bastante simple y directo por ahí.
Cosas que me gustaría hacer:
- crear una triangulación de un conjunto arbitrario de puntos
- encuentra el triángulo en el que se encuentra un punto arbitrario y busca los vértices
- crear una imagen de la triangulación (opcional)
¿Sugerencias?
Solución
Probablemente debería detallar un poco sus objetivos, de modo que se puedan proporcionar respuestas más relevantes, pero permítanme mencionar primero Triangle , una herramienta de generación de Delaunay en 2D, que está escrita en C y puede usarse como un programa independiente o desde su propio código.
Entonces, sobre CGAL, aquí hay un pequeño ejemplo típico, en caso de que aún lo considere:
#include <vector>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_2.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_2<K> Delaunay;
typedef K::Point_2 Point;
void load_points(std::vector< Point >& points)
{
points.push_back(Point(1., 1.));
points.push_back(Point(2., 1.));
points.push_back(Point(2., 2.));
points.push_back(Point(1., 2.));
}
int main()
{
std::vector< Point > points;
load_points(points);
Delaunay dt;
dt.insert(points.begin(), points.end());
std::cout << dt.number_of_vertices() << std::endl;
return 0;
}
Otros consejos
Vea también poly2tri, se ve bien: https://github.com/greenm01/poly2tri
He usado la biblioteca de superficie triangulada Gnu para la triangulación 2D Delaunay y funcionó bien. Ligeramente extraño de llamar porque usa ese estilo GLOP OOP-in-C, pero puede ser fácilmente envuelto .