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?

¿Fue útil?

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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top