Triangulation d'un polygone

En géométrie algorithmique, la triangulation d'un polygone consiste à décomposer ce polygone en un ensemble (fini) de triangles[1].

Une triangulation d'un polygone P est une partition de P en un ensemble de triangles qui ne se recouvrent pas, et dont l'union est P. Dans le cas le plus restrictif, on impose que les sommets des triangles ne soient que les sommets de P. Dans un cadre plus permissif, on peut rajouter des sommets à l'intérieur de P ou sur la frontière pour servir de sommets aux triangles.

Les triangulations sont des cas particuliers de graphes planaires rectilignes (i. e. dont les arêtes sont des segments).

La triangulation d'un polygone convexe est triviale et se calcule en un temps linéaire, par exemple en partant d'un sommet et en ajoutant des arêtes avec tous les autres sommets. En 1991, Bernard Chazelle montra que tout polygone simple peut être triangulé en un temps linéaire[2]. L'algorithme proposé est cependant très complexe, et des algorithmes plus simples sont toujours recherchés.

Méthodes de résolution

Méthode des oreilles

Une oreille d'un polygone.

Une manière de trianguler un polygone simple est d'utiliser le fait que tout polygone simple à au moins quatre sommets possède au moins deux « oreilles »[3]. Une oreille est un triangle avec deux arêtes appartenant à la frontière du polygone, et la troisième située à l'intérieur du polygone. L'algorithme consiste à trouver une telle oreille[4], à la retirer du polygone, ce qui donne un nouveau polygone qui répond toujours aux conditions, et à répéter l'opération jusqu'à ce qu'il n'y ait plus qu'un seul triangle.

Cet algorithme est simple à implémenter, mais sous-optimal : une implémentation qui stocke des listes séparées de sommets pour les triangles et le polygone aura une complexité en O(n2).

Décomposition en chaînes monotones

Décomposition en polygones monotones.

Un polygone monotone (en) est tel que sa frontière peut être divisée en deux parties, chacune d'entre elles étant composée de points dont les coordonnées selon une dimension donnée ne font que croître : la frontière ne revient pas « en arrière ». Fournier (en) et Montuno ont montré qu'un tel polygone peut être triangulé en temps linéaire[5].

Pour diviser un polygone en polygones monotones, on utilise une ligne verticale ou horizontale qui balaie les coordonnées dans une direction[1].

Cet algorithme a une complexité en O(n log n).

Notes et références

(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Polygon triangulation » (voir la liste des auteurs).
  1. (en) Mark de Berg, Marc van Kreveld, Mark Overmars et Otfried Schwarzkopf, Computational Geometry, Springer Verlag, , 2e éd. (ISBN 3-540-65620-0, lire en ligne), chap. 3 (« Polygon Triangulation »), p. 45-61.
  2. (en) Bernard Chazelle, « Triangulating a simple polygon in linear time », Discrete Comput. Geom., vol. 6, , p. 485-524 (DOI 10.1007/BF02574703, lire en ligne).
  3. Et même, deux oreilles qui ne se chevauchent pas : (en) Gary Hosler Meisters, « Polygons have ears », Amer. Math. Monthly, vol. 82, , p. 648-651 (lire en ligne).
  4. (en) Hossam ElGindy, Hazel Everett et Godfried Toussaint (en), « Slicing an ear using prune-and-search », Pattern Recognition Letters, vol. 14, no 9, , p. 719-722 (DOI 10.1016/0167-8655(93)90141-Y, lire en ligne).
  5. (en) A. Fournier et D. Y. Montuno, « Triangulating simple polygons and equivalent problems », ACM Transactions on Graphics, vol. 3, no 2, , p. 153-174 (DOI 10.1145/357337.357341).

Voir aussi

Articles connexes

Bibliographie

Liens externes

  • Portail de la géométrie
  • Portail de l'informatique théorique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.