2011-04-03 18 views
11

Estoy esperando el equivalente de CGAL (en C++) - Quiero la partición convexa de polígonos o al menos la triangulación. También tiene que ser gratis. Una pregunta anterior sugería JTS, pero no parece tener esas funciones.¿Hay una biblioteca de geometría para Java? (no JTS)

+0

Aconsejaría a cualquiera que no utilice JTS de todos modos para la geometría 3D. Tiene un defecto grave y simplemente no calcula las coordenadas Z: intersección, unión, áreas ... cualquier operación del género en 3D no funciona por ese motivo. La geometría 2D parece funcionar sin embargo. – DPM

Respuesta

2

GeoTools tiene una biblioteca bastante amplia de algoritmos de manipulación de la geometría, pero por supuesto al igual que JTS es algo orientado a SIG.

http://www.geotools.org/

7

JTS apoya triangulación de Delaunay, pero no limitado triangulación (agujeros):
http://lin-ear-th-inking.blogspot.com/2009/04/delaunay-triangulation-in-jts-111.html

Por triangulación Delaunay con límites que se pueden utilizar Poly2Tri. Funciona bastante bien, pero no se pudo triangular polígonos con agujeros, donde los agujeros tocan el contorno o tocan otro polígono.

Por el momento, utilizo el Tesselator OpenGl (exceso) con el envoltorio de java jogl (http://jogamp.org/) para la triangulación en java. Tienes que implementar las devoluciones de llamada correctas y hacer algunas modificaciones allí.

Ninguno de ellos satisface todas (mis) necesidades, pero hasta ahora no he encontrado uno mejor.

+1

Implementé un algoritmo de triangulación delaunay usando JOGL y el código fuente de http://www.informatik.uni-oldenburg.de/~trigger/ (ctrl + f triángulo para encontrar la entrada correspondiente). Se lanzó bajo una licencia educativa/personal, por lo que puede no ser útil para ti, pero fue lo suficientemente bueno para mí. – dimo414

1

Puede probar GeoLib que es un excelente paquete de geometría.

1

CGAL tiene enlaces accionados SWIG desde 2012. La triangulación y las mallas conformadas en 2D forman parte de ella. Por favor visite el github wiki para obtener más información.

Cuestiones relacionadas