Área do polígono de auto-interseção

Calculando a área de umirregular simples polígonoé trivial. No entanto, considere o polígono de auto-interseção ABCDEF mostrado à esquerda abaixo:

                   

Se usarmos a fórmula ligada acima, percorrendo os pontos na ordem dos polígonos, obteremos uma área de 0. (A área 'no sentido horário' cancela a área 'no sentido anti-horário').

No entanto, se nósclassificar os pontos radialmente em torno de um centro e calcular a área, obtemos a área incorreta do polígono ABEDCF à direita acima.

Como posso encontrar melhor a área visível de um polígono de auto-interseção? (Se a resposta exigir a criação de pontos fantasmas para cada interseção, forneça detalhes sobre como encontrar as interseções e como atravessá-las na ordem correta.)

Esta questão surgiu ao investigar casos de borda para a minha solução paraessa questão.

Definindo a área

Eu defino a "área" como a quantidade de pixels visíveis ao preencher o polígono usando as regras "não-zero" ou "evenodd". Vou aceitar uma resposta para qualquer um desses, embora ambos sejam melhores. Note que eu faço explicitamentenão defina a área para auto-sobreposição para contar a área de sobreposição duas vezes.

questionAnswers(3)

yourAnswerToTheQuestion