École de technologie supérieure
Génie de la production automatisée
GPA665
Structures de données et algorithmes
Laboratoire 3
Décomposition dun polygone concave en polygones convexes
Responsable du cours : Mohamed Cheriet, ing., Ph. D.
Rédaction du laboratoire : Jean-Christophe Demers
Révision et bame de correction : Yan Levasseur & Mathieu Binette
Temps alloué pour ce laboratoire : 4 périodes de laboratoire
Résumé
En trois comme en deux dimensions, la gestion de formes à géométrie complexes
nécessite beaucoup de manipulations matmatiques. Souvent, ces manipulations seront
simplifes par la décomposition d’une forme concave en plusieurs formes convexes, pour
lesquelles les algorithmes d’optimisation sont rapides et efficaces. Le graphisme et la
planification de trajectoire d’un robot mobile sont des exemples la décomposition en
formes convexes est ts avantageuse.
Ce laboratoire vous donnera loccasion de réaliser un algorithme simple de décomposition
en formes convexes. Ce sera loccasion de mettre en pratique les notions relatives à
l’utilisation du TDA arbre. De plus, par ce laboratoire, vous expérimenterez des notions
telles que les types structurés, types énumérés, pointeurs, tableaux dynamiques,
cursivi, et l’utilisation de structures de données et de fonctions existantes.
Il vous incombera donc de velopper un algorithme efficace pour soudre le problème
concret de la concavi d’une forme en adoptant une méthode de programmation
rigoureuse qui tient compte des concepts fondamentaux de quali logiciel.
GPA665 STRUCTURES DE DONNEES ET ALGORITHMES AUTOMNE 2002
LABORATOIRE 3 2 / 13
Énoncé du problème
La description d’une enti par un polygone apporte des solutions à une multitude de
problèmes de différentes natures. Ainsi, il est pertinent de velopper une panoplie
doutils algorithmiques et otriques servant à la manipulation de polygones. Or, il
existe plusieurs proprs particulières aux polygones convexes qui permettent le
développement d’outils puissants, efficaces et uniques, qui sont très lourds ou simplement
irréalisables pour le cas de polygones concaves.
Pour cette raison, il est souvent préférable de diviser un polygone concave en plusieurs
polygones convexes et ainsi pouvoir utiliser les différentes propriés de ces polygones
particuliers. Malgré tout, la composition d’un polygone n’est pas une che triviale et
demande l’élaboration d’un algorithme d’une certaine complexi.
Dans ce laboratoire vous aurez à implanter une solution fonctionnelle à ce probme.
Finalement, la nature récursive du probme sera exploitée.
Définitions dun polygone convexe
Soit P, un polygone formé de n sommets et n segments. P est convexe s’il répond à la
définition suivante (sinon P est concave) :
il est impossible de tracer une droite à l’inrieur du polygone qui traverse le
contour de ce dernier.
Une autre finition utile est :
tous les angles intérieurs du polygone sont inférieurs à 180°.
142,1°
121,5°
77,9°
131,6°
125,8°
121,0°
121,5°
77,9°
131,6°
44,0°
52,8°
292,2°
Polygone convexe Polygone concave
Sommets convexes
Sommets concaves
Segments défini par deux sommets
Figure 1 : Exemples de polygone convexe et de polygone concave
GPA665 STRUCTURES DE DONNEES ET ALGORITHMES AUTOMNE 2002
LABORATOIRE 3 3 / 13
Nature récursive du problème et structure de données
Intuitivement, il est facile de décomposer un polygone concave en deux sous-polygones
dont un est convexe et l’autre indéfini. velopper un tel algorithme de composition
peut être ts pratique puisque la naturecursive du probme apparaîts lepart. En
effet, il suffit d’utiliser simplement ce me algorithme de composition sur le
sous-polygone indéfini si ce dernier est concave. De cette façon, en appliquant
cursivement cet algorithme de décomposition sur tous les sous-polygones indéfinis qui
sont concaves, on obtient une décomposition complète du polygone concave initial en
plusieurs polygones convexes.
Puisque cette approche de composition donne pour chaque sous-polygone concave
deux sous-polygones pour lecrire, on utilise un arbre binaire permettant de représenter
cette structure de dones. Dans ce type d’arbre, chacun des noeuds correspond à un
polygone. Ainsi, la racine correspond au polygone concave initial qui est décrit par toutes
les feuilles de l’arbre (correspondant aux sous-polygones convexes de l’arbre). Il est
intéressant de remarquer que l’arbre obtenu n’est aucunement équilib puisque ce
dernier posde pour chaque noeud un enfant avec un seul et unique descendant.
anmoins, cette représentation d’un polygone concave par des polygones convexes
reste performante et ts bien adaptée étant donné la nature récursive du problème.
La figure 4 montre un exemple du sultat obtenu par une telle approche.
Algorithme de décomposition
Il existe plusieurs approches pour décomposer un polygone concave en polygones
convexes. L’approche présentée ici offre certaines caractéristiques inressantes.
Premièrement elle permet une solution élégante en utilisant l’approche récursive
pdemment expliquée. Deuxmement, elle permet une décomposition du polygone
initiale en sous-polygones de n sommets et non pas des polygones triangulaires formés
de 3 sommets uniquement (comme plusieurs autres algorithmes le font). De cette façon,
le nombre de sous-polygones convexes cessaires à la représentation du polygone
concave peut être beaucoup moindre. Finalement, il est possible d’optimiser l’algorithme
de façon à composer le polygone concave en un nombre optimal de sous-polygones
convexes. Cette optimisation se fait en prenant, pour chaque appel récursif, le
sous-polygone convexe qui minimise le nombre de sommets du sous-polygone indéfini.
Cette optimisation n’est pas demandée dans le cadre de ce travail
1
.
Lalgorithme de composition
2
dun polygone concave en sous-polygones convexes est
alien 2 étapes principales :
1. On identifie tous les sommets Si correspondant aux concavités Ci du polygone P.
2. On termine si le polygone est concave par le nombre de sommets correspondant aux
concavités (nc). Si nc = 0 alors le polygone est convexe et on arrête le processus, sinon on
divise le polygone concave en deux polygones : un polygone convexe et un polygone indéfini.
Cette division est la partie la plus licate du travail à faire et se fait en 4 étapes.
i. On identifie un sommet Si pour lequel il existe deux voisins concutifs, Si+d et Si+2d qui
respectent les trois critères suivants
3
:
1
Les étudiants qui trouveront la façon de faire cette optimisation et qui prendront le temps de l’implanter se
riteront une évaluation plus clémente !
2
L’algorithme qui est décrit ici est la version simplife, sans optimisation.
GPA665 STRUCTURES DE DONNEES ET ALGORITHMES AUTOMNE 2002
LABORATOIRE 3 4 / 13
a. le sommet Si+d est un sommet convexe (ceci implique que le polygone for par les
trois sommets
didii SSS 2
est un polygone convexe);
b. le sommet Si+3d est à l’exrieur (la frontière étant incluse) du polygone formé par les
sommets
didii SSS 2
;
c. le segment forpar les sommets Si et Si+2
d n’entre pas en collision avec le
polygone à scinder.
ii. On parcourt les sommets du polygone à partir de Si+j
d (j = 2) jusquà ce qu’on atteigne un
sommet Si+j
d qui correspond à l’un des cinq crires suivants :
a. Si+j
d est un sommet correspondant à une concavité;
b. le sommet Si+(j+1)
d est à l’intérieur (la frontière étant exclue) du polygone formé par
les sommets Si à Si+j
d;
c. le segment formé par les sommets Si+(j+1)
d et Si entre en collision avec le polygone à
scinder;
d. le polygone créé par les sommets Si à Si+(j+1)
d est concave;
e. le polygone créé par les sommet Si à Si+(j+1)
d entre en collision avec un des
sommets restants du polygone à scinder.
iii. On scinde le polygone concave P en deux polygones : le polygone convexe Pconvexe
formé par les sommets Si à Si+j
d et le polygone infini Pinfini for par les sommets
Si+(j+1)
d à Si (en respectant la finition circulaire des sommets décrivant les polygones).
iv. On recommence récursivement le processus avec Pindéfini
Voici un exemple pas à pas de cet algorithme pour le polygone suivant (les nombres
indiquent l’ordre dans lequel sont définis les sommets) :
1
2
3
4
5
67
8
9
10
11
12 13
14
Sommets convexes
Sommets concaves
Segments défini par deux sommets
Figure 2 : Polygone concave
3
d est la direction du voisin consiré, c’est-dire 1 ou -1. Pour ce laboratoire on simplifie l’algorithme en posant
d = 1.
GPA665 STRUCTURES DE DONNEES ET ALGORITHMES AUTOMNE 2002
LABORATOIRE 3 5 / 13
Polygone convexe résultat de l’appel
cursif pdent
Polygone indéfinie sultat de l’appel
cursif pdent
Description de l’algorithme pour
passer de l’appel récursif courant
au suivant
1
2
3
4
5
67
8
9
10
11
12 13
14
Polygone initial.
nc = 4
Si = 2
j = 2 défini par la contrainte 2c
1
2
3
1
2
34
5
6
7
8
910
11
12
13
Ces polygones sont le sultat de
l’algorithme appliq au polygone
initial aps le premier appel de la
fonction de décomposition.
nc = 4
Si = 1
j = 2 défini par la contrainte 2c
1
2
3
12
3
4
78
9
5
6
10
11
12
nc = 4
Si = 1
j = 3 défini par la contrainte 2a
12
3
4
7
8
9
10
1
45
6
2
3
nc = 4
Si = 3
j = 4 défini par la contrainte 2d
5
23
4
1
1
2
3
4
5
6
7
nc = 3
Si = 3
j = 2 défini par la contrainte 2a
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!