2009-09-18 6 views
19

Ich würde gerne mit einigen (2D) Delaunay-Triangulationen experimentieren und bin auf der Suche nach einer relativ kleinen Bibliothek, mit der ich arbeiten kann. Ich bin mir über CGAL im Klaren, aber ich habe mich gefragt, ob da etwas ziemlich Einfaches und Einfaches ist.Leichte Delaunay-Triangulationsbibliothek (für C++)

Ich mag Dinge tun würde:

  • eine Triangulation von einer beliebigen Menge von Punkten erstellen
  • Fund Dreieck ein beliebiger Punkt in ist, und holt die Eckpunkte
  • ein Bild der Triangulation erstellen (optional)

Vorschläge?

+0

In welcher Dimension? – Camille

+0

Benötigen Sie eine Bibliothek oder könnte ein eigenständiges Programm in Ordnung sein? – Camille

+0

Ein eigenständiges Programm wäre wahrscheinlich nicht in Ordnung. Ich versuche, dies in ein größeres Software-Tool zu integrieren. –

Antwort

11

Sie sollten wahrscheinlich Ihre Ziele ein wenig detaillieren, so dass mehr relevante Antworten zur Verfügung gestellt werden können, aber lassen Sie mich zuerst Triangle, ein 2D Delaunay Generation Tool, das in C geschrieben ist, und kann als eigenständiges Programm verwendet werden oder aus Ihrem eigenen Code aufgerufen.

Dann, etwa CGAL, hier ist ein typisches kleines Beispiel für den Fall, betrachten Sie es immer noch:

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

Danke, dass du mich auf Triangle aufmerksam gemacht hast. Es ist sehr einfach und einfach zu bedienen. –

+0

Kann einer dieser Ansätze in einer nativen iPad App verwendet werden? – Andre

+0

@AndrewProck hast du es als lib benutzt? weil ich kein Code-Beispiel mit diesem Dreieck lib – jokoon