2011-04-13 13 views
12

Quiero triangular el polígono complejo (pero no autointersecante) con orificios, de modo que todos los triángulos resultantes queden dentro del polígono, cubran completamente ese polígono y obedezcan las reglas del triángulo de Delaunay.Delaunay triangulando el polígono 2d con agujeros

Obviamente, podría construir la triangulación de Delaunay para todos los puntos, pero me temo que algunos bordes del polígono no se incluirán en la triangulación resultante.

Entonces, ¿es posible dicha triangulación? Y si es así, ¿cómo puedo hacerlo?

Por las dudas, lo necesito para construir la aproximación del eje medial del polígono (espero que se pueda hacer conectando todos los puntos de circunferencia de los triángulos resultantes).

+0

Pero el conjunto de vértices (y por lo tanto su triangulación de Delaunay) no determina si el polígono tiene o no un agujero. ¿No es esto importante para ti? – TonyK

+0

@TonyK - Tengo varios conjuntos de vertículos secuenciales: uno para el polígono externo y varios conjuntos para los polígonos interiores. – Rogach

+0

Pero si 'construyes la triangulación de Delaunay para todos los puntos', triangularás dentro de los agujeros. ¿Cómo vas a evitar esto? – TonyK

Respuesta

10

Parece que quiere constrained Delaunay triangulation. Los "agujeros" se pueden implementar restringiendo los bordes de entrada para que permanezcan intactos en la triangulación.

Consulte los proyectos Triangle y poly2tri para las implementaciones.

+0

¡Se ve muy bien! Lo comprobaré. – Rogach

+0

Sí, exactamente lo que necesitaba. ¡Gracias! – Rogach

3

Este es uno de los métodos que se me ocurrió al hacer navmesh para un juego de estrategia en tiempo real. Tenga en cuenta que se trata de homebrew, no se utilizaron herramientas de terceros, me tomó alrededor de 3 semanas para poner en práctica y corrección de errores:

  1. alimentar a todos los puntos en la triangulación de Delaunay (para obtener triángulos más uniformes)
  2. Comprobar lo largo de los agujeros contornos y pares de flip polígono producidos por Delaunay para que coincida con contornos
  3. agujeros Clip vísceras

resultado (PLZ ignorar los contornos de color púrpura):

enter image description here

Cuestiones relacionadas