Divide el polígono que se cruza por sí mismo (Código C)

Quiero dividir un polígono de auto intersección en polígonos simples. Tengo los bordes y los puntos de intersección guardados en una estructura de datos (una lista conectada).

Entonces aquí hay un ejemplo. Tengo una lista conectada con las coordenadas x, y de los bordes y los puntos de intersección del polígono. Según el polígono en esteimagen sería :: (1) -> (2) -> (3) ... -> (7). Lo que intento hacer es obtener los bordes de los polígonos simples (triángulos aquí). En este caso :: 1,2,7 / 3,4,5 / 5,6,7.

Respuestas a la pregunta(1)

Su respuesta a la pregunta