para darle un poco más opciones de bibliotecas por ahí:
Polyboolean. Nunca intenté este, pero parece prometedor: http://www.complex-a5.ru/polyboolean/index.html
General Polygon Clipper. Este funciona muy bien en la práctica y hace triangulación, así como los agujeros de recorte y agujeros: http://www.cs.man.ac.uk/~toby/alan/software/
Mi recomendación personal: Utilice la tesselación de la GLU (OpenGL Utility Library). El código es sólido como una roca, más rápido que GPC y genera menos triángulos. No necesita un OpenGL-Handle inicializado ni nada de esto para usar la lib.
Si no le gusta la idea de incluir las librerías OpenGL en una aplicación DirectX, también existe una solución: simplemente descargue el código de implementación de referencia SGGL de OpenGL y levante el triangulador. Solo usa los nombres OpenGL-Typedef y una mano llena de enumeraciones. Eso es. Puede extraer el código y crear una lib propia en una o dos horas.
En general, mi consejo sería utilizar algo que ya funciona y no comenzar a escribir su propia triangulación.
Es tentador rodar el suyo si ha leído sobre el algoritmo de corte de oreja o línea de barrido, pero el hecho es que los algoritmos de geometría computacional son increíblemente difíciles de escribir de manera que funcionen estable, nunca se cuelguen y siempre devolver un resultado significativo. Los errores numéricos de redondeo se acumularán y te matarán al final.
Escribí un algoritmo de triangulación en C para la empresa con la que trabajo. Lograr que el algoritmo central funcionara tomó dos días. Conseguir que funcionara con todo tipo de entradas degeneradas tomó otros dos años (no trabajaba a tiempo completo, pero créanme, pasé más tiempo de lo que debería).
¿Necesita 2D (triángulos) o 3D (tetraedros)? –
Este es un polígono 2D –