Enveloppe convexe Triangulation de Delaunay
Transcription
Enveloppe convexe Triangulation de Delaunay
Rapport du Mercredi 23 Janvier 2008 Enveloppe convexe Triangulation de Delaunay Pauleau Jean Denis Roudaut Prigent Vidal Clément Master 1 SIS 1/16 Rapport du Mercredi 23 Janvier 2008 Table des matières I/ Présentation....................................................................................................................................... 4 II/ Définition ........................................................................................................................................ 5 1/ Simplexe...................................................................................................................................... 5 2/ Complexe.....................................................................................................................................5 3/ Triangulation................................................................................................................................5 4/ Cercle circonscrit......................................................................................................................... 5 III/ Enveloppe convexe ........................................................................................................................6 1/ Présentation .................................................................................................................................6 2/ Définition ....................................................................................................................................6 3/ Algorithme Graham..................................................................................................................... 6 3.1/ Principe................................................................................................................................ 6 3.2/ Algorithme........................................................................................................................... 7 3.3/ Illustration............................................................................................................................ 7 4/ Algorithme Division Fusion........................................................................................................ 7 4.1/ Principe..................................................................................................................................... 7 4.2/ Algorithme .......................................................................................................................... 7 4.3/ Illustration............................................................................................................................ 8 III/ Triangulation de Delaunay ............................................................................................................ 9 1/ Présentation .................................................................................................................................9 2/ Définition ....................................................................................................................................9 3/ Algorithme Incrémental (Hermeline, Watson) .......................................................................... 9 3.1/ Principe................................................................................................................................ 9 3.2/ algorithme ......................................................................................................................... 10 3.3/ Illustration.......................................................................................................................... 11 4/ Algorithme Basculement .......................................................................................................... 12 4.1/ Principe.............................................................................................................................. 12 4.2/ Algorithme......................................................................................................................... 12 4.3/ Illustration.......................................................................................................................... 12 5/ Calcul de la boule circonscrite...................................................................................................13 5.1/ Calcul en 2D...................................................................................................................... 13 5.2/ Calcul en 3D...................................................................................................................... 13 6/ Point dans la boule ouverte........................................................................................................13 7/ Point dans simplexe................................................................................................................... 14 7.1/ Cas d’un simplex 2D (Triangle) :...................................................................................... 14 7.2/ Cas d’un simplex 3D (Tétraèdre) :.....................................................................................14 IV/ Conclusion....................................................................................................................................15 V/ Bibliographie................................................................................................................................. 16 1/ enveloppe convexe.....................................................................................................................16 2/ Triangulation..............................................................................................................................16 2/16 Rapport du Mercredi 23 Janvier 2008 Remerciement Nous remercions l’ensemble du corps enseignant du master SIS et tout particulièrement notre tuteur Jean Sequeira. 3/16 Rapport du Mercredi 23 Janvier 2008 I/ Présentation L’étude de la structure d’un nuage de points est un problème récurrent et très important en imagerie, en modélisation, et même en recherche opérationnelle. Cette étude passe classiquement par le calcul de l’enveloppe convexe de ce nuage de points et par une triangulation « optimale » appelée « Triangulation de Delaunay ». Des algorithmes ont été conçus pour répondre à ces deux problèmes (un algorithme d’enveloppe convexe en 2D et un algorithme de triangulation de Delaunay en 2D seront étudiés dans le cours de Modélisation Géométrique). L’objet de ce projet est d’étudier et de mettre en œuvre, en les comparant, quelques algorithmes importants de ce domaine, à la fois en 2D et en 3D.) 4/16 Rapport du Mercredi 23 Janvier 2008 II/ Définition 1/ Simplexe Simplexe : Structure de base de construction. En Dimension n, cette structure sera constitué de n+1 points (exemple en dimension 2, 3 points soit un triangle) 2/ Complexe Complexe : Ensemble de simplexe de dimension inférieure. 3/ Triangulation En topologie, une triangulation d'un espace topologique X est un complexe simplicial K homéomorphe à X et un homéomorphisme h:K→X. Dans les termes de Layman, si X est un plan alors une triangulation est une façon de découper X en une collection de triangles. 4/ Cercle circonscrit Le cercle circonscrit est le cercle qui passe par les sommets du triangle. Son centre est situé à l'intersection des médiatrices. La boule circonscrite est la boule qui passe par les sommets du tétraèdre. Son centre est situé à l'intersection des plans médians. En dimension quelconque, son centre est situé à l'intersection des l'hyperplan médiateur. 5/16 Rapport du Mercredi 23 Janvier 2008 III/ Enveloppe convexe 1/ Présentation Le calcul de l’enveloppe convexe est un problème récurrent en modélisation géométrique. Nous allons ici présenter plusieurs algorithmes majeurs. Le premier a été créé par Ronald Graham et publié en 1972. Le second est un algorithme de type division fusion que nous avons implémentée. 2/ Définition L'enveloppe convexe d'un ensemble de points est l‘ensemble convexe le plus petit parmi ceux qui le contiennent Un enveloppe est convexe si pour tout point A et B contenue dans cette dernière le segment AB est lui aussi contenu. 3/ Algorithme Graham 3.1/ Principe Le principe est de prendre un point au centre du nuage de points. On trie ensuite les points de l'ensemble en fonction de leur angle avec ce point centrale. A partir du point de plus petite ordonnée, on parcourt le nuage par séquences de 3 points dans l'ordre de trie. Si pour passé du point un au point trois on tourne dans le sens trigonométrique, alors le point 2 fait partie de l'enveloppe convexe sinon il n'en fait pas partie et on passe au point d’après. 6/16 Rapport du Mercredi 23 Janvier 2008 3.2/ Algorithme Calcul du barycentre du nuage de point. Trie des points autour du barycentre On sélectionne le point le plus bas On traite les point trois par trois (point courant, point suivant, point suivant suivant) Si l’angle entre le point courant, le point suivant et le point suivant suivant n’est pas dans le sens trigonométrique. On récupère le point courant (comme appartenant a l’enveloppe convexe) On passe au point suivant Fin si Fin si Sinon Point suivant égale au point suivant suivant Si on n’a pas atteint le dernier point Le point courant égal au point précédent Fin si Fin sinon 3.3/ Illustration 4/ Algorithme Division Fusion 4.1/ Principe La stratégie diviser pour régner consiste à briser un problème en sous-problèmes plus simples de même type, à résoudre ces sous-problèmes, puis à fusionner les résultats obtenus pour apporter une solution au problème posé. Il s'agit donc d'une démarche essentiellement récursive. Les algorithmes de ce type apparaissent comme composés de deux algorithmes; le premier partage le problème en sous-problèmes, le second algorithme fusionne les résultats partiels en le résultat global. 4.2/ Algorithme Trie tous les points par x croissant Division en 2 parties Recherche de l'enveloppe convexe de chacune des parties On rejoint les deux parties pour avoir une enveloppe convexe Rappel de la fonction sur chaque parties nouvellement créer 7/16 Rapport du Mercredi 23 Janvier 2008 4.3/ Illustration 8/16 Rapport du Mercredi 23 Janvier 2008 III/ Triangulation de Delaunay 1/ Présentation La triangulation de Delaunay est importante dans le domaine de modélisation géométrique mais aussi dans l’analyse de données car il est le dual du diagramme de Voronoï. Cette triangulation porte le nom du mathématicien Boris Delone. 2/ Définition Delaunay : « Façon de trianguler un ensemble de points avec des triangles le moins plat possible » La triangulation de Delaunay d'un ensemble de n points est l'unique triangulation telle que les cercles circonscrits de chaque triangle triangle ne contienne aucun autre point de l'ensemble. Cette notion peut être généralisée à n'importe quelle dimension : en 3D, par exemple, on utilisera des tétraèdres et des sphères. Le terme disque ouvert (ou boule vide en 3D) est employé pour désigner l'espace intérieur au cercle circonscrit (ou à la sphère en 3D) sans prendre en compte les points situé sur celui-ci (ou situé sur la surface de la sphère). On utilisera donc ce principe de la boule vide pour notre triangulation. Principe de la boule vide : l'ensemble le disque ouvert circonscrit ne contient aucun point de Exemple : Cette triangulation n'est pas de delaunay, le critere de la boule vide n'est pas vérifié Cette triangulation est de delaunay, le critere de la boule vide est vérifié 3/ Algorithme Incrémental (Hermeline, Watson) 3.1/ Principe Le principe est de créer un simplexe de dimension n englobant du nuage de point à trianguler. Ensuite de manière incrémental on ajoute les points à mailler. A chaque ajout de point on 9/16 Rapport du Mercredi 23 Janvier 2008 triangule, De manière récursive, on vérifie la boule ouverte de chaque simplexe ainsi créé et on effectue un basculement de simplexe de dimension n-1 sur chaque simplexe. 3.2/ algorithme Algorithme incrémental //calcul et ajout du simplexe de dimension n englobant //Pour tout les points à trianguler //Pout chaque simplexe de dimension n //si le point appartient à ce simplexe //On supprime le simplexe en cour de traitement //on créer les 4 nouveaux simplexes en utilisant le nouveau point //Basculement simplexe n-1 sur les 4 simplexes créés //Fin si //Fin pour //Fin pour //on retire les 4 points du simplexe 3d englobant créé au début Algorithme récursif Basculement de simplexe n-1 sur un simplexe de dimension n (Arête pour un triangle ou face pour un tétraèdre) Soit S1 le simplexe en cour de basculement Pour tout les points déjà maillé S’ils sont dans la boule ouverte de s1 *Recherche le simplexe de dimension n associé au point qui partage le même simplexe de dimension n-1 que S1, on appel se implexe S2 *Basculement du simplex partagé *Appel de la fonction Basculement S1 *Appel de la fonction Basculement S2 Fin si Fin pour 10/16 Rapport du Mercredi 23 Janvier 2008 3.3/ Illustration Nuage de points ajout du 2eme point Basculement Boite englobante ajout du 3eme point ajout du 1er point Basculement ajout du 4eme point 11/16 Rapport du Mercredi 23 Janvier 2008 4/ Algorithme Basculement 4.1/ Principe Le principe est d’effectuer en premier lieu une triangulation quelconque (pas de Delaunay) et d'applique ensuite le principe de basculement de simplexe de dimension n-1 sur chaque simplexe de dimension n récursivement (comme précédemment) afin qu'ils respectent le critère de la boule vide 4.2/ Algorithme Triangulation des points du nuage de points Pour chaque simplexe Pour chaque point du nuage de points Si le point est dans la boule vide du simplex en cours Basculement Fin si Fin pour Fin pour 4.3/ Illustration 12/16 Rapport du Mercredi 23 Janvier 2008 5/ Calcul de la boule circonscrite 5.1/ Calcul en 2D En deux dimensions, le centre du cercle circonscrit est donné par l'intersection des médiatrices des arêtes du triangle. 5.2/ Calcul en 3D En trois dimensions, on procède de la même façon, on cherche tout d’abord le centre du cercle circonscrit à un des triangles du tétraèdre, on le nommera ABC. Une fois l'intersection O des trois médiatrices trouvées, on détermine un vecteur normal au plan comprenant le triangle. O D C A C A B D O v B A B O ’ On déplace ensuite le point O sur ce vecteur normal, de cette façon il sera toujours a égale distance des 3 points du triangle ABC. Le point O est donc déplacé de sorte que la distance OA (ou OB ou OC) devienne égale à la distance qui sépare O du dernier point du tétraèdre, cette distance définira le rayon de la sphère. De cette façon, on récupère donc un point O à égale distance de tous les points du tétraèdre, qui est donc le centre de la sphère circonscrite. 6/ Point dans la boule ouverte On calcul la distance euclidienne entre le point et le centre de la boule vide si cette distance est inferieur au rayon de celle ci alors les points est dans la boule ouverte 13/16 Rapport du Mercredi 23 Janvier 2008 7/ Point dans simplexe 7.1/ Cas d’un simplex 2D (Triangle) : Pour vérifier si un point est contenu dans un polygone (triangle dans notre cas) on lance une demi droite a partir du point à tester et on compte le nombre d’intersection de cette demi droite avec les arêtes du polygone si ce nombre est impaire le point est intérieur si le nombre est pair le point est extérieur. 7.2/ Cas d’un simplex 3D (Tétraèdre) : Pour vérifier si un point est contenue dans un tétraèdre on calcul les équations des plans de chaque face du tétraèdre en choisissant des coefficients de sorte a ce que lorsque on insère les coordonnée du quatrième point du tétraèdre on obtiennent une valeur positive. Pour tester ensuite l’intériorité du point il suffit d’insérer les coordonnées du point à tester dans chaque équation de plan et si tous les résultats sont positif, le point est bien a l’intérieur dans le cas contraire le point est extérieur. 14/16 Rapport du Mercredi 23 Janvier 2008 IV/ Conclusion Ce projet nous a permis de mettre en œuvre et d’appréhender les techniques acquis au cours de cette première année de master. Nous avons pue implémenter des algorithmes majeures dans le domaine de la modélisation géométrique. Outre les problèmes typiquement algorithmique nous avons rencontré des difficultés d’ordre mathématiques qui nous on poussés à effectuer des recherche dans ce sens. A l’issue du projet nous avons réussi a mettre en place un programme de calcul d’enveloppe convexe sur un nuage de point 2D, une application de la triangulation de Delaunay sur le même type de nuage de point. Nous avons appliqué cette méthode sur un nuage de point 3D afin d’obtenir une surface, cette méthode est souvent utilisé pour modéliser des terrains. Enfin une dernière application a était réalisé dans le but de paver un nuage de point 3D. Par manque de temps et en raison de certains problèmes rencontrés ce dernier n’est pas complètement fonctionnel. 15/16 Rapport du Mercredi 23 Janvier 2008 V/ Bibliographie 1/ enveloppe convexe , http://fr.wikipedia.org/wiki/Enveloppe_convexe http://www-sop.inria.fr/geometrica/courses/slides/enveloppe-convexe-od.pdf http://www.liafa.jussieu.fr/~cc/ALGO-AVANCEE/Enveloppes.pdf http://graal.ens-lyon.fr/~fvivien/Enseignement/PPP-2001-2002/Enonce.pdf 2/ Triangulation http://fr.wikipedia.org/wiki/Triangulation_de_Delaunay http://fearyourself.developpez.com/tutoriel/jeu/Delaunay/ http://www.kaddour.com/chap4/chap4.htm http://bobuse.free.fr/Delaunay/ http://www-bio3d-igbmc.u-strasbg.fr/~wicker/Cours/Licence/GeoAlgo2.ppt Et bien sur les cours de Jean Sequeira et Jean Luc Mari 16/16