Accueil🇫🇷Chercher

Algorithme de Greiner-Hormann

L’algorithme de Greiner-Hormann est utilisé en infographie pour découper des polygones[1]. Il est plus performant que l’algorithme de Vatti, mais ne peut pas gérer d’éventuels cas dégénérés[2]. Il peut cependant être utilisé avec des polygones s’auto-intersectant et n'étant pas convexes. Il peut facilement être généralisé afin d’effectuer d’autres opérations booléennes sur les polygones, telles que l’union et la différence.

Description

L’algorithme est basé sur la définition d’« intérieur » d’un polygone, elle-même basée sur la notion d’indice. Il considère les régions d’indice pair comme étant à l’intérieur du polygone : ceci est également connu sous le nom de règle du pair-impair. L’algorithme prend deux listes de polygones en entrée, chaque polygone étant lui-même représenté comme une liste de sommets reliés.

Dans sa formulation initiale, l’algorithme est divisé en trois phases :

  • Dans la première phase, les intersections entre les cĂ´tĂ©s des polygones sont calculĂ©es. Des sommets sont rajoutĂ©s aux points d’intersection, et chacun est muni d’un pointeur vers son homologue situĂ© dans l’autre polygone.
  • Dans la deuxième phase, chaque intersection est marquĂ©e comme Ă©tant soit une intersection d’entrĂ©e, soit une intersection de sortie. Cette dĂ©cision est prise en appliquant la règle du pair-impair au premier sommet, puis en traversant le polygone en alternant le marquage (Ă  une intersection d’entrĂ©e doit suivre une intersection de sortie).
  • Dans la troisième et dernière phase, le rĂ©sultat est gĂ©nĂ©rĂ©. L’algorithme dĂ©marre d’une intersection non traitĂ©e et choisit la direction du parcours du polygone, en fonction du marquage entrĂ©e/sortie : pour une intersection d’entrĂ©e, il le traverse vers l’avant, et pour une intersection de sortie, il traverse dans le sens inverse. Les sommets sont ajoutĂ©s au rĂ©sultat jusqu’à ce qu’une autre intersection soit trouvĂ©e ; l’algorithme va alors regarder l’intersection correspondante dans l’autre polygone et va de nouveau choisir une direction de parcours, en suivant la mĂŞme règle. Si l’intersection suivante a dĂ©jĂ  Ă©tĂ© traitĂ©e, l’algorithme s’arrĂŞte pour cette partie de la sortie, et recommence pour les intersections non traitĂ©es. La sortie est entièrement dĂ©terminĂ©e lorsqu’il ne reste plus d’intersections non traitĂ©es.

L’algorithme n’est pas limité aux polygones, et peut aussi bien traiter des segments que des courbes paramétriques.

Un des inconvénients majeurs de l’algorithme original est le fait qu’il ne prenne pas en charge les cas dégénérés, tels que les doublons de sommets ou les auto-intersections ne s’effectuant que sur un sommet. La publication originale suggère de modifier certains sommets pour retirer les dégénérescences.

Voir aussi

Références

  1. Greiner, GĂĽnther; Kai Hormann (1998).
  2. Ionel Daniel Stroe.

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.