Leichte Delaunay-Triangulation-Bibliothek (für C ++) [geschlossen]
-
22-07-2019 - |
Frage
Ich mag mit einigen (2D) Delaunay Triangulation spielen, um und bin auf der Suche nach einer recht kleinen Bibliothek zu arbeiten. Ich bin mir dessen bewusst CGAL, aber ich frage mich, ob es etwas ziemlich einfach und unkompliziert da draußen war.
Dinge, die ich tun möchte:
- erstellen eine Triangulierung eines beliebigen Punktes
- finden Dreieck ein beliebiger Punkt ist in, und holen die Eckpunkte
- Erstellen eines Bildes der Triangulation (optional)
Verbesserungsvorschläge?
Lösung
Sie sollten wahrscheinlich Detail Ihre Ziele ein wenig, so dass mehr relevante Antworten zur Verfügung gestellt werden können, aber lassen Sie mich zunächst a href erwähnen <= „http://www.cs.cmu.edu/~quake/triangle.html“ rel = "noreferrer"> Triangle , eine Generation Werkzeug 2D Delaunay, die in C geschrieben ist, und kann sowohl als eigenständiges Programm oder von Ihrem eigenen Code aufgerufen werden.
Dann, etwa CGAL, hier ist ein typisches kleines Beispiel, falls Sie es noch berücksichtigen:
#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;
}
Andere Tipps
Siehe auch poly2tri, es sieht nett aus: https://github.com/greenm01/poly2tri
Ich habe die Gnu Triangulierte Oberflächenbibliothek für 2D-Delaunay-Triangulation verwendet und es hat gut funktioniert. Etwas seltsam zu nennen, weil es verwendet, dass OOP-in-C GLib Stil, aber es kann leicht sein, verpackt .