Nous avons un polygone, donné sous la forme d'une liste de sommets dans le sens inverse des aiguilles d'une montre en partant du sommet le plus bas( points
). Certaines diagonales du même polygone sont données (aucune d'entre elles ne se croise), comme un ensemble de paires de points ( diagonals
).
Nous devons trouver toutes les faces dans lesquelles le polygone est coupé (comme une liste de sommet pour chaque face).
La sortie comprendrait les visages suivants :
face1 = [(-68,-36), (-53,-40), (-39,44)]
face2 = [(-53,-40), (-21,37), (-12, 6), (-5,49)]
...
Comme vous l'avez peut-être remarqué, les diagonales découpent le polygone en polygones monotones par rapport à l'axe des x. Si cela peut vous aider en quoi que ce soit.
Je suis sur ce problème depuis plusieurs heures maintenant. Je n'arrive pas à trouver un problème même lié à celui-ci. Toute aide serait appréciée, merci.
Modifier : Le problème peut être réduit à trouver tous les cycles simples dans un graphe(i.e. les cycles sans corde). J'ai trouvé ces questions similaires :
Trouver des polygones dans un graphe non orienté
Trouver tous les cycles sans cordon dans un graphe non orienté
Cependant, la solution retenue dans la seconde ne semble pas fonctionner.