2010-06-13 16 views
6

Recientemente me encontré con la necesidad de una biblioteca o conjunto de bibliotecas para manejar operaciones en polígonos 2D. Necesito poder realizar operaciones booleanas/de recorte (diferencia y unión) y triangulación.Biblioteca para operaciones de polígono

Hasta ahora, las bibliotecas que he encontrado son poly2tri, CGAL y GPC. Poly2tri se ve bien para la triangulación, pero aún me quedan operaciones booleanas, y no estoy seguro de su madurez.

CGAL y GPC son solo gratuitos si mi propio proyecto es gratuito. Mi proyecto particular no es comercial, por lo que dudo en pagar o solicitar licencias. Pero es posible que desee utilizar mi código para un proyecto comercial en el futuro, por lo que dudo sobre las licencias de código abierto de CGAL y la restricción de GPC solo de freeware. No parece haber bibliotecas de recorte de polígonos con buenas licencias de estilo BSD.

Ah, y se prefiere C/C++.

Respuesta

11

Clipper es un programa gratuito de la biblioteca de recorte polígono de código abierto (escrito en Delphi y C++)^que hace exactamente lo que estás pidiendo (a excepción de la triangulación) - http://sourceforge.net/projects/polyclipping/

En mi prueba, Clipper es mucho más rápido y menos propenso a errores que GPC (ver comparaciones más detalladas aquí - http://www.angusj.com/delphi/clipper.php#features).

Re: biblioteca de gráficos de Geometría Anti-grano (AGG) - no hace recorte de polígono, sino que simplemente usa GPC (que no es gratuito para aplicaciones comerciales). Sin embargo, Clipper tiene unidades AGG para que recortar en AGG sea tan fácil como GPC.

^Editar: Clipper ahora también está escrito en C# (junto con los módulos Perl, Ruby, Haskell y Flash escritos por terceros).

+0

Interesante. ¿Tendría algún proyecto como ejemplo que use su biblioteca? Sin ofender si es nuevo, pero la madurez y la estabilidad es algo que estoy buscando. – AJM

+1

Y sin ofender tomado :). Acabo de terminar de escribir la biblioteca central hace algunas semanas, por lo que dudo que alguien haya tenido tiempo para evaluarla e integrarla completamente en su propio código. –

+0

Clipper te restringe a enteros. ¿Alguna razón por qué? GPC, por ejemplo, no. – cape1232

0

http://www.antigrain.com/license/index.html es lo más cercano que puedo encontrar, puede que tenga que gastar un dólar si es comercial, pero puede usarlo gratis por ahora, y obtener el consentimiento más adelante.

+0

Gracias, aunque solo estoy buscando una biblioteca de geometría. Anti-Grain es una biblioteca de representación completa. – AJM

2

¿Qué tal el impulso? http://www.boost.org/doc/libs/1_47_0/libs/polygon/doc/index.htm

Si está de acuerdo con el uso intensivo de genéricos en la interfaz, sospecho que esto servirá para sus propósitos. No estoy seguro si contiene triangulación, pero puede implementar uno de los muchos algoritmos de triangulación disponibles si no lo hace.

3

PolygonLib es una nueva biblioteca de clipping de polígonos escrita en С ++ y ya utilizada en dos proyectos. Es numéricamente robusto, utiliza coordenadas dobles , y está optimizado para polígonos con gran cantidad de vértices. Consulte http://www.ulybin.de/products/polygonlib.php?lang=en para obtener más información y comparar el rendimiento y la utilización de la memoria con GPC y PolyBoolean.

La versión de evaluación restringida de la biblioteca es gratuita para uso no comercial y admite las operaciones que necesita (a excepción de la triangulación).

+0

Interesante respuesta ... ¿estás involucrado con este libray? Si no, indíquelo;) – Stephan

+2

Lideré el desarrollo de la biblioteca, desarrollé sus algoritmos, API y arquitectura. – AKU

Cuestiones relacionadas