2011-04-12 19 views

Respuesta

2

Editar: Ah. Veo que "Straight Skeleton" es un término técnico. El artículo de wikipedia hace referencia a varios algoritmos. ¿Has mirado eso?


Según tengo entendido, usted tiene un polígono (¿convexo?). De él, restas 1 o más polígonos (potencialmente no convexos). Desea convertir el resultado en un conjunto de polígonos sin agujeros. ¿Hay reglas adicionales que intentas aplicar?

Tengo dificultades para encontrar un conjunto de reglas del ejemplo que proporcionó. Los polígonos externos no son convexos; por lo que no parece que estés tratando de encontrar un conjunto convexo para representar el resultado (que es una tarea relativamente común).

Si pudiera utilizar la distribución que se muestra a continuación, el algoritmo es bastante simple. ¿Puedes aclarar?

Triangularized shape

2

Es posible que pueda utilizar el JTS Topology Suite. Es una biblioteca muy capaz que he utilizado en una serie de proyectos, nunca para el esqueleto recto, pero puede ser posible.

-1

¿Puedo pedir u ¿cuál es su propósito para encontrar el esqueleto recto? ¿Es personal o comercial? Me interesaría saber cómo lo estás usando para resolver problemas de tiempo real. Tengo una biblioteca de Java que hace eso. Mi algoritmo se enumera aquí http://web.stcloudstate.edu/rsarnath/skeleton/definition.htm

+2

Comercial. En mi caso, en realidad estaba buscando una forma de "adelgazar" el polígono. El esqueleto recto se veía bien, pero demasiado lento: necesitaba obtener esa "línea central" para polígonos complejos (formados por muchos miles de puntos) en tiempo real (<1 seg) en máquinas débiles. Así que, al final, decidí crear una triangulación Delaunay restringida del polígono y conectar los centros del triángulo, me dio una aproximación bastante buena de la "línea central". – Rogach