algorithm - regulares - Fusiona triángulos superpuestos en un polígono
propiedades de los poligonos (3)
Tengo un montón de triángulos superpuestos de un modelo 3D proyectado en un plano 2D. Necesito unir cada isla de triángulos conmovedores en un polígono cerrado y no convexo.
Los polígonos resultantes no deberían tener ningún agujero en ellos (ya que los datos de origen no).
Muchos de los triángulos fuente comparten bordes (punto flotante idéntico) con otros triángulos en los datos fuente.
¿Cuál es la forma más fácil de hacer esto? El rendimiento no es particularmente importante, ya que esto se hará en el momento del diseño.
Imagine la proyección en un plano como una "vista" del modelo (es decir, la dirección de proyección es la línea de visión y la proyección es lo que ve). En ese caso, los bordes de los polígonos que desea calcular corresponden a la silueta del modelo.
La silueta, a su vez, es un conjunto de bordes en el modelo. Para cada borde en la silueta, las caras adyacentes tendrán normales que apuntan lejos del plano o hacia el plano. Puede verificar esto tomando el producto de puntos de la cara normal con el plano normal: busque los bordes cuyas caras normales adyacentes tengan productos puntuales de signos opuestos con la dirección de proyección.
Una vez que haya encontrado todos los bordes de la silueta, puede unirlos en los límites de los polígonos deseados.
En general, puede encontrar más información sobre la detección y extracción de siluetas al buscar términos como la mesh silouette finding detection
. Quizás un buen lugar para comenzar está aquí .
Pruebe gpc o la biblioteca General Polygon Clipper.
También encontré este enfoque [1], que intentaré a continuación.