2010-11-23 12 views
10

Tengo rutas vectoriales 2D cerradas, especificadas en SVG paths-like syntax - es decir, estas rutas incluyen líneas rectas y varias curvas Bezier. ¿Hay algo así como una pequeña y agradable biblioteca discreta & (preferiblemente en C, Java o Ruby, pero cualquier lenguaje funcionará si esta biblioteca es limpia y fácil de usar) que permite hacer operaciones booleanas como unión, intersección y resta con estas rutas ?Objetos gráficos SVG/vector operaciones booleanas (unión, intersección, sustracción)

Lo que he encontrado hasta el momento incluye:

  • productos enormes y caros vector comercial gráficas (como Autodesk AutoCAD o Adobe Illustrator) que se pueden llamar usando algún tipo de API o con guión de hacer 2D booleano operaciones de rutas, lo cual es claramente una exageración para mis propósitos.
  • Inkscape desarrollado internamente lib2geom biblioteca que carece de documentación, enlaces, tiene algunos problemas de compilación, parece ser utilizado en ningún proyecto además de Inkscape y parece bastante complejo.
  • CGAL es una enorme y compleja biblioteca de geometría computacional, que funciona en un espacio de objetos bastante extraño (es decir, tiene una loca combinación de plantillas, funciones de estilo imperativas para realizar operaciones en estas estructuras de datos con plantillas, etc.) y no funciona Parece que tiene enlaces sanos a otros lenguajes además de C++. Los enlaces de Python a CGAL parecen abandonados y no me parecen muy amigables.
  • JTS parece estar centrado en SIG y se trata solo de líneas rectas, mientras que tengo que lidiar con las curvas de Bezier tipo SVG.

Entonces, la pregunta es, ¿hay algún otro agradables & bibliotecas pequeñas, fáciles flotando en torno a tratar con operaciones booleanas sobre caminos SVG-como?

+0

¿Está buscando una cierta estructura de datos geométrica a cabo o simplemente para una representación visual de los resultados? –

+0

Estoy buscando: 1) estructura de datos, 2) operaciones booleanas con polígonos y curvas; No necesito bibliotecas de visualización, es decir, El Cairo o algo similar. – GreyCat

Respuesta

5

Quizás me falta algo, pero ¿las clases en el paquete java.awt.geom no se ajustan a sus necesidades? Se ocupan de formas bidimensionales; los Area ofertas de clase específicamente con operaciones booleanas:

Un Area objeto almacena y manipula una descripción independiente de la resolución de un área cerrada de espacio de 2 dimensiones. Los objetos Area se pueden transformar y pueden realizar varias operaciones de geometría de área constructiva (CAG) cuando se combinan con otros objetos Area. Las operaciones de CAG incluyen adición, resta, intersección y exclusividad de área.

+0

¡Gracias! Eso parece ser casi exactamente lo que necesito a primera vista, es extraño cómo lo pasé por alto. – GreyCat

+0

¿Es posible usar esta biblioteca para crear objetos gráficos (unión de 100 círculos, algunos de ellos superpuestos, algunos aislados, por ejemplo), y luego exportar a svg o pdf? Si es así, ¿podría dar algunas indicaciones? ¡Gracias! – qed

+0

@qed, el paquete 'java.awt.geom' trata exclusivamente con formas 2D. La exportación a SVG o PDF requiere bibliotecas adicionales como Batik e iText, respectivamente. Por lo que sé, ambas bibliotecas tienen algún tipo de implementación 'Graphics2D' que puede utilizar. – lhballoti

Cuestiones relacionadas