2010-06-13 3 views
6

Ich habe kürzlich eine Bibliothek oder einen Satz von Bibliotheken für Operationen mit 2D-Polygonen benötigt. Ich muss Boolean/Clipping-Operationen (Differenz und Union) und Triangulation durchführen können. Die bisher gefundenen Bibliotheken sind poly2tri, CGAL und GPC. Poly2tri sieht gut aus für Triangulation, aber ich bin immer noch mit booleschen Operationen und ich bin unsicher über seine Reife.Bibliothek für Polygonoperationen

CGAL und GPC sind nur frei, wenn mein eigenes Projekt frei ist. Mein spezielles Projekt ist nicht kommerziell, daher zögere ich, irgendwelche Lizenzen zu bezahlen oder anzufordern. Aber ich möchte meinen Code für ein zukünftiges kommerzielles Projekt verwenden, daher bin ich bei den Open-Source-Lizenzen von CGAL und der Freeware-Beschränkung von GPC zurückhaltend. Es scheint keine Polygon-Clipping-Bibliotheken mit netten BSD-style-Lizenzen zu geben.

Oh, und C/C++ ist bevorzugt.

Antwort

11

Clipper ist eine Open-Source-Freeware Polygon Clipping-Bibliothek (geschrieben in Delphi und C++) ^, das genau das tut, was Sie fragen (mit Ausnahme der Triangulation) - http://sourceforge.net/projects/polyclipping/

In meinen Tests ist Clipper sowohl wesentlich schneller und weniger fehleranfällig als GPC (siehe detailliertere Vergleiche hier - http://www.angusj.com/delphi/clipper.php#features).

Re: Anti-Korn Geometrie (AGG) Grafik-Bibliothek - es macht nicht Polygon-Clipping, sondern einfach GPC (die nicht für kommerzielle Anwendungen frei ist). Clipper verfügt jedoch über AGG-Einheiten, um Clipping in AGG genauso einfach wie GPC zu machen.

^Edit: Clipper ist jetzt auch in C# geschrieben (zusammen mit Perl, Ruby, Haskell und Flash-Modulen von Drittanbietern geschrieben).

+0

Interessant. Hättest du irgendwelche Projekte als Beispiele, die deine Bibliothek benutzen? Nichts für ungut, wenn es neu ist, aber Reife und Stabilität ist etwas, das ich suche. – AJM

+1

Und nichts für ungut gemacht :). Ich habe erst vor ein paar Wochen die Core-Bibliothek geschrieben, also bezweifle ich, dass irgendjemand noch Zeit hatte, sie vollständig zu bewerten und in ihren eigenen Code zu integrieren. –

+0

Clipper beschränkt Sie auf Ganzzahlen. Irgendein Grund warum? GPC zum Beispiel nicht. – cape1232

0

http://www.antigrain.com/license/index.html ist die nächste, die ich finden kann, müssen Sie möglicherweise einen Geld ausgeben, wenn es kommerziell wird, aber Sie können es kostenlos für den Moment verwenden, und später einholen Zustimmung.

+0

Danke, obwohl ich nur eine Geometrie-Bibliothek suche. Anti-Grain ist eine vollständige Rendering-Bibliothek. – AJM

2

Wie wäre es mit Boost? http://www.boost.org/doc/libs/1_47_0/libs/polygon/doc/index.htm

Wenn Sie mit der starken Verwendung von Generika in der Schnittstelle in Ordnung sind, vermute ich, dass dies Ihre Zwecke gut erfüllen wird. Ich bin mir nicht sicher, ob es Triangulation enthält, aber Sie können einen der vielen verfügbaren Triangulationsalgorithmen implementieren, wenn dies nicht der Fall ist.

3

PolygonLib ist eine neue Polygon-Clipping-Bibliothek, die in C++ geschrieben ist und bereits in zwei Projekten verwendet wird. Es ist numerisch robust, verwendet doppelte Koordinaten und ist für Polygone mit einer großen Anzahl von Vertices optimiert. Weitere Details und Vergleich der Leistung und Speichernutzung mit GPC und PolyBoolean finden Sie unter http://www.ulybin.de/products/polygonlib.php?lang=en.

Die eingeschränkte Evaluierungsversion der Bibliothek ist kostenlos für nicht kommerzielle Zwecke und unterstützt die von Ihnen benötigten Operationen (außer Triangulation).

+0

Interessante Antwort ... sind Sie mit dieser Bibliothek beteiligt? Wenn nein, bitte geben Sie es an;) – Stephan

+2

Ich leitete die Entwicklung der Bibliothek, entwickelte ihre Algorithmen, API und Architektur. – AKU