Dividir polígono com interseção automática (código C)

Eu quero dividir um polígono com auto-interseção em polígonos simples. Eu tenho as arestas e os pontos de interseção salvos em uma estrutura de dados (uma lista conectada).

Então, aqui está um exemplo. Eu tenho uma lista conectada com as coordenadas x, y das arestas e os pontos de interseção do polígono. De acordo com o polígono nestecenário seria :: (1) -> (2) -> (3) ... -> (7). O que estou tentando fazer é obter as arestas dos polígonos simples (triângulos aqui). Neste caso: 1,2,7 / 3,4,5 / 5,6,7.

questionAnswers(1)

yourAnswerToTheQuestion