Notes de cours 10 - Polygones, triangulation, diagramme de Voronoï INF6083 - Sujet spécial UQO, Québec, Canada Enseignant Jurek Czyzowicz notes rédigées par Ganaël Jatteau 24 mars 2004 Résumé Dans un premier temps, nous abordons dans ces notes de cours diverses méthodes pour faire des calculs de distance sur des polygones (distance entre un point et un polygone, distance mini entre deux polygones...). Cette partie va nous donner l occasion d aborder en détails la méthode des rotating calipers pour trouver par exemple la plus petite surface rectangulaire qui enferme un polygone. Ensuite nous allons aborder des problèmes de triangulation dans le cas des polygones quelconques. Nous verrons en particulier une méthode générique. Et pour finir nous allons entamer la théorie sur les diagrammes de Voronoï et voir quelles sont les propriétés de ces diagrammes. L algorithme permettant de calculer le diagramme sera vu dans la prochaine partie. 1 Géométrie sur les polygones Tous les problémes mentionnés dans cette section ne sont pas résolus. Certains restent ouverts... 1.1 Distance d un point à un polygone problème ouvert On veut trouver ici la plus courte distance entre un sommet d un polygone convexe et un point. Une des piste consiste ici à étudier les variations de la fonction distance : δ(sommet, point). En prenant deux points sur le polygone, on est capable de dire vers quels sommets se diriger si on se sert de l angle entre les arêtes du polygone et le segment point-sommet. Ensuite il reste à faire une recherche dichotomique. Suite au prochain épisode... 1
1.2 Intersection d une droite avec un polygone problème résolu On cherche ici à déterminer les points d intersection entre une droite et un polygone supposant que cette intersection existe. La figure 1 illustre cet exemple. Fig. 1 Exemple de droite coupant un polygone convexe On cherche tout d abord un vecteur directeur de la droite. Ensuite on prend toutes les arêtes une par une (chaque arête devient un vecteur comme sur la figure 1) en calculant pour chacune d elle le déterminant avec le vecteur directeur de la droite. Dès que le signe du déterminant change, alors on vient de croiser la droite. Il reste alors à trouver l intersection entre le segment qui constitue l arête et la droite. Pour ç a on applique une formule mathématique. La compléxité de l algorithme est en temps linéaire par rapport au nombre de sommets du polygone puisqu on parcourt ses arêtes une par une. 1.3 Calcul d une région de visibilité dans un polygone problème ouvert On cherche à déterminer la région éclairée par un point dans un polygone quelconque. Ce problème peut être résolu en temps linéaire. La seule piste valable semble d utiliser l ordre polaire de tous les sommets du polygone en partant du point demandé. Il reste à creuser encore un peu... 2 Rotating callipers Nous allons voir maintenant une méthode qui permet de résoudre plusieurs types de problémes en faisant rotationner des droites autour d un polygone convexe. 2
2.1 Recherche des coordonnées les plus éloignées Ici nous allons chercher les deux sommets les plus éloignés dans deux polygones convexes. 1 Pour procéder on va faire tourner deux droites en même temps autour des deux polygones. A chaque fois la rotation se fait par rapport à un des points du polygone. On stoppe la rotation dès qu une des droites tombe sur une arête d un des polygones. La figure 2 illustre ce cas. Fig. 2 Exemple illustrant la méthode des rotating callipers Dès qu une des deux droites tombe sur une arête du polygone, on va calculer la distance qui sépare les deux points de rotation. On teste tous les sommets pour ensuite retenir quelle est la distance maximale. 2.2 Cas où les polygones se croisent Si jamais les deux polygones considérés s intersectent, le résultat fourni par les rotating callipers n a plus vraiment de sens. Il faut donc être en mesure de détecter cette intersection avant de lancer l algorithme. 1 Le problème inverse qui consiste à trouver les deux points les plus proches est similaire. 3
Le nombre maximale d intersections possibles entre deux polygones est n + n où n = min (n, m) et où n et m sont les nombres de sommets des deux polygones. La recherche de toutes les intersections pourrait alors se faire en θ(n + n) = θ(n). En pratique une telle compléxité n est pas possible car il faut vérifier toutes les arêtes des deux polygones. On obtient finalement une complexité en θ(n + m). 2.3 Plus petite surface qui enferme un polygone problème ouvert On peut démontrer que la plus petite surface rectangulaire qui enferme un polygone doit être alignée sur un des côtés. La démonstration est simple si on cherche à encadrer le polygone par seulement deux droites parallèles. Par contre elle devient plus compliquée si on tient compte des quatre côtés d un rectangle. Fig. 3 Enfermement d un polygone dans une surface rectangulaire 3 Triangulation de polygone quelconque Dans cette section, on aborde une méthode générale qui sert à la triangulation de polygones quelconques. Elle utilise une droite de balayage qui parcourt tous les sommets du graphe. Tout d abord, on commence par distinguer les différents sommets qui composent le polygone. On en défini quatre sortes différentes : Les sommets de début Les sommets normaux 4
Fig. 4 Nommage des sommets pour la triangulation Les sommets de fin Les sommets de partitionnement La figure 4 illustre bien ces quatre catégories de sommets. On peut maintenant commencer le balayage du polygone par une droite (par exemple une droite horizontale qui parcourt de haut en bas). Le but sera de relier les sommets de partitions entre eux de manière à retomber sur un polygone convexe. Fig. 5 La droite de balayage parcourt des intervalles À un instant donné de son parcourt, la droite de balayage contient un ensemble d intervalles qui correspondent à l intérieur du polygone (figure 5). On va utiliser l évolution de ces intervalles pour détecter la présence des sommets de partition. Au fur et à mesure que l on rencontre les sommets de partition, on les relie entre eux de façon à supprimer cette catégorie de sommets définitivement et avoir ensuite un cas plus simple. Pour chaque sommet rencontré, on est capable de dire de quel type de sommet il s agit (figure 6) ce qui permet de mettre à jour les intervalles 5
Fig. 6 Démarrage des intervalles balayés par la droite de balayage. Une solution possible serait d appliquer deux fois l algorithme en balayant dans deux directions opposées et donc en traitant indépendament les deux types de sommets de partition. Cette opération n est pas forcément nécessaire puisqu on est capable de relier tous les sommets de partition en une seule passe. On joint toujours ces sommets avec le plus bas de son intervalle. Cette méthode à une complexité en θ(n log(n)). Le log(n) apparait car il faut effectuer un pré-traitement en ordonnant les sommets. 4 Diagrammes de Voronoï 4.1 Généralités Les diagrammes de Voronoï définissent des régions appartenant à des points dans l espace euclidien. La figure 7 donne un exemple de diagramme. On peut prendre comme exemple une carte qui contient des stations d essence. Si on trace le diagramme de Voronoï pour chacune des stations (représentées par des points), on est capable de dire pour n importe quel point du plan à partir de quelle station il est le plus proche. Les diagrammes de Voronoï peuvent se tracer en prenant la médiatrice pour chacunes des paires de points. Chaque médiatrice s arrête dès qu elle rencontre une autre médiatrice. 4.2 Propriétés Les propriétés de ces diagrammes sont très nombreuses ici. Tout d abord, on définit les termes suivants : 1. P : un ensemble de point 6
Fig. 7 Exemple de diagramme de Voronoï 2. P i : un point particulier 3. V (P ) : diagramme de Voronoï pour l ensemble de points P 4. V (P i ) : région appartenant au point P i 5. D(P ) est le graphe dual de V (P ) Voici la liste de propriétés générales sur les diagrammes de Voronoï : Chaque région V (P i ) est convexe V (P i ) est non bornée ssi P i est un point de l enveloppe convexe. Si v est un sommet de V (P ) appartenant à V (p 1 ), V (p 2 ) et V (p 3 ) alors v est un centre du cercle C(v) passant par p 1, p 2 et p 3. C(v) est un cercle circonscrit d un triangle de D(p) et l intérieur de C(v) ne contient pas de sites. Si p i est le plus proche voisin de p j, alors (p i, p j ) est une arête de D(P ). S il y a un cercle passant par p i et p j ne contenant aucun autre site alors (p i, p j ) est une arête de D(P ). On peut aussi définir la liste suivante de propriétés de triangulation : D(P ) est une triangulation s il n y a jamais plus de trois médiatrices qui se joignent en un seul point Chaque face de D(P ) correspond à un sommet de V (P ) Chaque arête de D(P ) correspond à une arête de V (P ) Chaque sommet de D(P ) correspond à une région de V (P ) 7
L extérieur de D(P ) est une enveloppe convexe de sites L intérieur de chaque triangle de D(P ) contient aucun site 8