Question

J'aimerais jouer avec certaines triangulations (2D) de Delaunay et je cherche une bibliothèque assez petite pour travailler. Je suis au courant de CGAL, mais je me demandais s’il existait quelque chose de assez simple et direct.

Choses que j'aimerais faire:

  • créer une triangulation d'un ensemble arbitraire de points
  • trouvez un triangle contenant un point quelconque et récupérez les sommets
  • créer une image de la triangulation (facultatif)

Des suggestions?

Était-ce utile?

La solution

Vous devriez probablement détailler un peu vos objectifs afin de pouvoir fournir des réponses plus pertinentes, mais permettez-moi d'abord de mentionner Triangle , un outil de génération 2D de Delaunay, écrit en C et pouvant être utilisé en tant que programme autonome ou appelé à partir de votre propre code.

Ensuite, à propos de CGAL, voici un petit exemple typique, si vous le considérez toujours:

#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;
}

Autres conseils

Voir aussi poly2tri, ça a l'air sympa: https://github.com/greenm01/poly2tri

J'ai utilisé la bibliothèque de surfaces triangulées Gnu pour la triangulation 2D de Delaunay et tout a bien fonctionné. Un peu étrange à appeler car il utilise le style GLOP OOP-in-C, mais il peut facilement être bouclé .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top