Triangulations de Steiner Mathieu Brévilliers Séminaire du LMIA 26 octobre et 9 novembre 2006 1. Origine de la notion de point de Steiner La notion de point de Steiner est introduite dans le problème de l’arbre de Steiner (en référence au mathématicien Jakob Steiner, 19ème siècle). C’est un problème très proche de celui de l’arbre recouvrant minimal. Soit un ensemble V de sommets dans le plan. Il faut trouver un arbre A qui relie tous les sommets de V. Il existe deux manières d’aborder le problème pour le résoudre : soit tous les sommets de A sont dans V, soit A peut contenir d’autres points que ceux de V, ce sont les points de Steiner. Dans les deux cas, chaque arête a un coût, et il faut trouver l’arbre de coût minimal. Exemple : Arbre recouvrant minimal : L = 2 Arbre de Steiner : L = sqrt(3) Les arêtes forment des angles de 120° en 2D Et de 109° en 3D (cf molécule de méthane) Arbre recouvrant minimal : L = 3 Avec 1 point de Steiner : L = 2,828 Arbre de Steiner minimal : L = 2,732 2 2. Triangulations de Steiner a) Définitions En géométrie algorithmique, un point de Steiner est un point qui n’appartient pas à l’ensemble de départ. Une triangulation de Steiner est une triangulation de la réunion de l’ensemble de départ et des points de Steiner. Dans le cas d’un ensemble de points, les données forment un sous-ensemble des sommets de la triangulation de Steiner : sa frontière peut être plus « large » que l’enveloppe convexe de l’ensemble de départ. Dans le cas d’un polygone, une triangulation de Steiner aura des sommets supplémentaires à l’intérieur et sur le polygone. Un côté du polygone pourra être subdivisé en plusieurs arêtes colinéaires. Dans le cas d’un PSLG, les points de Steiner sur les segments doivent être les mêmes des « deux côtés » des segments. De plus, dans ces deux derniers cas, les arêtes initiales doivent être incluses dans la triangulation de Steiner. Exemple de triangulation de Steiner : b) Problématique Globalement il s’agit d’optimiser un critère sur la forme des éléments, tout en minimisant le nombre de ces éléments. Soit on fixe le nombre de points de Steiner et on calcule la triangulation optimale, soit on fixe la qualité requise pour le critère d’optimalité, et on minimise le nombre de points de Steiner pour y parvenir. 3 3. Intérêts Les triangulations de Steiner sont adaptées pour les simulations qui utilisent les méthodes des éléments finis. Ces méthodes discrétisent le domaine de simulation (ex. : l’air autour d’une aile) en le subdivisant en plein de petits éléments (triangles ou quadrilatères en 2D, tétraèdres ou hexaèdres en 3D). L’ensemble de tous ces éléments forme un maillage. Pour que ces méthodes donnent de bons résultats (vitesse de calcul + précision), il faut générer des maillages qui satisfont des contraintes : - forme des éléments (bornes sur les angles) - complexité raisonnable (nombre d’éléments) - orientation des éléments (dans le sens d’un flux par exemple) Dans une approximation à l’aide des éléments finis, l’erreur est liée à l’angle minimal, et encore plus fortement liée à l’angle maximal. La hauteur minimale d’un triangle influence la qualité d’une approximation de surface courbe. 4 4. Problème de maximisation de l’angle minimal a) « Uniform square mesh », par Baker B.S. Baker, E. Grosse, and C.S. Rafferty. Nonobtuse triangulation of polygons. Disc. and Comp. Geometry 3 (1988) 147-168. Globalement, il y a 3 étapes: - raffiner le maillage carré uniforme jusqu’à ce que chaque carré contiennent une partie suffisamment petite des données de départ, - déformer les carrés pour s’aligner sur les arêtes de départ, - trianguler les carrés, en utilisant une étude de cas spéciaux. Il s’agit de placer un maillage carré uniforme sur l’ensemble de départ : le maillage doit être suffisamment fin pour que deux sommets de départ soient séparés par plusieurs carrés. Baker insère les arêtes et les sommets de départ en retriangulant le maillage carré autour (à une petite distance) de ces éléments initiaux. Résultat: triangulations de régions polygonales et de PSLG avec des angles compris entre 13° et 90° (si les angles de départ sont supérieurs à 13°). Remarque : cet algorithme répond aussi au problème de triangulation non obtuse. b) Algorithme avec des quadtree, par Bern M. Bern, D. Eppstein, and J.R. Gilbert. Provably good mesh generation. In Proc. 31st IEEE Symp. Foundations of Computer Science (1990) 231-241. To appear in J. Comp. System Science. 48:384-409, 1994. Il s’agit d’une amélioration de l’algorithme proposé par Baker. Les quadtree rendent l’algorithme adaptatif : il place beaucoup de petits triangles aux endroits intéressants (risque d’erreur important, donc on a besoin de plus de précision) et moins de triangles (qui sont plus grands) aux endroits moins intéressants (là où la précision n’a pas d’importance, ce qui permet d’accélérer les calculs). Quadtree : il s’agit d’une partition récursive d’une région du plan. Un carré (la racine) recouvre toute la région. Un carré peut être subdivisé en quatre carrés fils en faisant passer des lignes horizontales et verticales par son centre. L’ensemble des carrés forme un arbre avec les carrés les plus petits aux niveaux les plus bas de l’arbre. « Balance condition » : le côté d’un carré est subdivisé en au plus 2 parties par les carrés adjacents. 5 « well separated » : chaque point de départ doit se trouver au centre d’une grille de 5*5 carrés qui ne contiennent aucun autre point de départ en leurs intérieurs. Déformation du maillage : chaque sommet de départ remplace le sommet du quadtree le plus proche, et les arêtes incidentes au sommet supprimés sont connectées au point de départ. Les carrés non déformés peuvent être triangulés en tenant compte de la subdivision de leurs côtés tel qu’aucun angle n’est inférieur à arctan(0,5)=26,5°. Les carrés déformés peuvent être triangulés en ajoutant une diagonale tel qu’aucun angle n’est inférieur à 20°. 6 Lemme : le nombre de carré produit par l’algorithme est O(nlogA), tel que A est l’« aspect ratio » maximal dans la triangulation de Delaunay de l’ensemble de points initial. Théorème : l’algorithme utilise O(k) triangles, tel que k est le nombre de triangles dans une triangulation de Steiner minimale de l’ensemble de points initial, qui est telle que tous les angles sont supérieurs à 20°. Remarques : - ça marche aussi avec une borne plus petite que 20°, mais plus la borne est petite, plus la constante cachée dans le O(k) est grande - en renforçant la « balance condition » et en remplaçant les carrés par des « tuiles », on peut garantir des angles compris entre 36° et 80° - d’après Bern on peut peut-être obtenir des angles entre 51° et 72° mais tout autre amélioration ferait tendre le maillage vers un maillage topologiquement égal à un maillage de triangles équilatéraux, ce qui nécessite un très grand nombre de points de Steiner. - On peut adapter l’algorithme pour la triangulation de polygone à trous : on obtient aucun nouvel angle supérieur à 18,4°. Le théorème s’étend au cas des polygones à trous. Le lemme est plus faible : O(nA) carrés tel que A est l’« aspect ratio » maximal de la triangulation de Delaunay contrainte. - L’algorithme peut s’étendre aux PSLG, cf Mitchell et Vavasis [157]. c) CDT based algorithm, par Chew L.P. Chew. Guaranteed-quality triangular meshes. Tech. Rep. TR-89-983, Comp. Science Dept., Cornell University, 1989. L.P. Chew. Guaranteed-quality mesh generation for curved surfaces. In Proc. 9th ACM Symp. Comp. Geometry (1993) 274-280. 7 Soit h un paramètre fixé par l’utilisateur. Supposons que la distance entre deux points de départ quelconques est supérieure à h. Supposons que les arêtes de départ soient de taille supérieure à h et inférieur à sqrt(3)h. Si ce n’est pas le cas, il suffit de subdiviser les arêtes. On calcule la CDT de l’ensemble de départ. Tant qu’il existe un triangle dont le rayon du cercle circonscrit est supérieur à h, on ajoute un point de Steiner au centre du cercle et on recalcule la CDT. Théorème : La triangulation qui résulte de l’algorithme est telle que : (1) la distance entre 2 sommets est supérieure ou égale à h, (2) les cercles circonscrits aux triangles ont un rayon inférieur ou égal à h. Corollaire : La triangulation qui résulte de l’algorithme est telle que : (3) tous les angles sont compris entre 30° et 120°, (4) la longueur des arêtes est comprise entre h et 2h. Remarques : - l’algorithme est en O(n²) dans le pire des cas, tel que n est le nombre de triangles dans la triangulation résultante, - l’algorithme peu être modifié pour être linéaire dans le pire des cas : on insère les points et arête initiale dans un maillage de triangle équilatéraux et on retriangule autour (distance<4h) pour maintenir la CDT => le nombre de point affecté par la modification peut être borné car il sont à une distance h les uns des autres => temps constant pour insérer un nouveau point => O(n). - tel quel, l’algorithme produit un maillage final uniforme, ce qui signifie qu’on utilise de toute façon trop de points de Steiner pour satisfaire le critère de qualité fixé. - on peut permettre à l’algorithme de raffiner certaines régions pour obtenir plus de précision dans une simulation. 8 - Amélioration de l’algo avec l’« Input feature size » (c’est la distance minimale entre deux sites) à la place de h. - L’algorithme de 1993 permet d’ajouter un paramètre pour rendre l’algorithme adaptatif, càd qu’il place plus de petits triangles là où c’est le plus important, et moins ailleurs. d) CDT based algorithm, par Ruppert J. Ruppert. A new and simple algorithm for quality 2-dimensional mesh generation. In Proc. 4th ACM-SIAM Symp. on Disc. Algorithms (1993) 83-92. J. Ruppert. A Delaunay Refinement Algorithm for Quality 2-Dimensional Mesh Generation. Journal of Algorithms 18(3):548–585, May 1995. Il s’agit d’une extension de l’algorithme de Chew dans la mesure où Ruppert ne génère pas un maillage uniforme : le nombre de triangle est plus faible tout en satisfaisant le même critère de qualité. Exemples : Ruppert définit plusieurs opérations qu’il utilise dans son algorithme : - Scinder ou Diviser une arête du PSLG : c’est rajouter un sommet au milieu de l’arête, et la remplacer par 2 nouvelles arêtes qui joignent le nouveau point aux extrémité de l’ancienne arête, puis enfin mettre à jour la DT. - Scinder ou Diviser un triangle : c’est ajouter le centre du cercle circonscrit, puis mettre à jour la DT. - Réparation : il s’agit de supprimer les arêtes de Delaunay qui ont une intersection avec les arêtes du PSLG : il suffit de Scinder les arêtes du PSLG qui posent problème, et de recalculer la DT. On recommence jusqu’à ce que la DT soit conforme au PSLG. 9 L’algorithme maintient une triangulation de Delaunay des sommets d’un PSLG : - On commence par une étape de Réparation. - Tant qu’il reste un mauvais triangle (càd avec un angle inférieure à la borne fixée) : Scinder un mauvais triangle, si le nouveaux point ne convient pas (càd s’il est inclus dans le cercle diamétral d’au moins une arête du PSLG), l’enlever puis Scinder les arêtes du PSLG qui gênent et refaire une réparation pour maintenir une DT conforme au PSLG. 10 11 Remarques : - l’algorithme fonctionne pour une borne sur l’angle minimal inférieure à 30°. - Cette version de l’algorithme suppose que le PSLG de départ n’a pas d’angle inférieur à 90°. Ruppert présente une amélioration qui permet de se passer de cette hypothèse. - Il n’y a pas d’ordre pour traiter les mauvais triangles. Ruppert donne un borne supérieure pour le nombre de triangles : cette borne dépend de la « local feature size » du PSLG de départ. La lfs d’un point p du plan est le rayon du disque centré sur p tel que ce disque intersecte deux sommets ou segments (non incidents au même sommet). Théorème : le nombre de sommets du maillage est au plus : Tel que B est la région incluse dans la boîte englobante, et C1 est une constante. Théorème : (idem que Bern => O(k) triangles avec une constante cachée) Soient a<=20°, S un ensemble de départ, T une triangulation de X avec a comme angle minimal. Il existe une constante Ca telle que si T a n triangles, alors le raffinement de Delaunay proposé a au plus Ca*n triangles. Si on suppose que T est la triangulation qui satisfait la borne a avec le moins de triangles possible, alors le raffinement de Delaunay proposé est optimal à la constante Ca près. 12 5. Problème de minimisation de l’angle maximal a) Ensemble de points M. Bern, D. Eppstein, and J.R. Gilbert. Provably good mesh generation. In Proc. 31st IEEE Symp. Foundations of Computer Science (1990) 231-241. To appear in J. Comp. System Science. 48:384-409, 1994. Résultat : la triangulation d’un ensemble de n points du plan avec aucun angle obtus a une taille en O(n). Remarque : minimiser l’angle maximal semble plus intéressant que maximiser l’angle minimal, c’est-à-dire qu’on génère moins de points de Steiner, et le résulta t est plus approprié pour limité les erreurs d’approximation dans les méthodes des éléments finis. b) Polygones M. Bern, S. Mitchell, and J. Ruppert. Linear-size nonobtuse triangulation of polygons. In Proc. 10th ACM Symp. Comp. Geometry (1994) 221-230. Résultat : un polygone peut être triangulé avec O(n) triangles rectangles, en temps O(nlogn) pour les polygones simples, et en temps O(nlog²n) pour les polygones à trous. 13 c) PSLG S.A. Mitchell. Refining a triangulation of a planar straight-line graph to eliminate large angles. In Proc. 34th IEEE Symp. on Foundations of Comp. Science (1993) 583-591. Résultat: Un PSLG à v sommets peut être triangulé avec aucun angle supérieur à 7pi/8, avec O(v²logv) points de Steiner, et en temps O(v²log²v). T.-S. Tan. An optimal bound for conforming quality triangulations. In Proc. 10th ACM Symp. Comp. Geometry (1994) 240-249. Résultat: Un PSLG à n sommets peut être triangulé avec aucun angle supérieur à 11pi/15, avec O(n²) points de Steiner, et en temps O(n²logn). 14 6. Triangulations de Delaunay conformes a) Définition L’ensemble de départ est un PSLG. Une triangulation de Delaunay conforme à un PSLG est telle que chaque arête du graphe est une réunion d’arête de la DT des sommets du graphe et des points de Steiner Autrement dit, la triangulation de Delaunay de l’ensemble (sommets du graphe + points de Steiner) doit contenir les arêtes du graphe initial. Exemple de différents types de triangulations : un PSLG Triangulation de Delaunay conforme Triangulation contrainte du PSLG Triangulation de Delaunay contrainte et conforme 15 Intérêts : Dans le cas de la génération de maillage d’un ensemble de points, la DT peut être une solution intéressante, ou un point de départ privilégié pour un algorithme de raffinement. En effet elle optimise plusieurs critères : - elle maximise l’angle minimal - elle minimise le cercle circonscrit maximal - elle minimise le « min-containment circle » maximal (càd le plus petit cercle qui contient le triangle considéré) Mais en général dans la génération de maillage, le domaine n’est pas un ensemble de points, mais une région polygonale. Et en général, la DT des sommets d’une région polygonale non-convexe pose problème : les arêtes de la DT coupent les frontières du domaine. Il y a 2 solutions pour régler ce problème : - les DT contraintes - les DT conformes (ajout de points de Steiner) Remarque : Il existe deux approches distinctes pour la génération de DT conformes : - soit on ajoute des points de Steiner n’importe où, càd sur les arêtes du PSLG et dans le reste du plan : cf l’algorithme de Ruppert par exemple. - soit on ajoute des points de Steiner que sur les arêtes du PSLG : c’est cette méthode qui se rapproche le plus des triangulations de Delaunay de segments que nous avons définies. b) Algorithme de Saalfeld A. Saalfeld. Delaunay edge refinements. In Proc. 3rd Canadian Conf. Comp. Geometry (1991) 33-36. Théorème : pour chaque chaque triangulation, il existe un « Delaunay triangulation-edge refinement ». Théorème : il existe un algorithme itératif qui construit en un nombre fini d’étapes un tel raffinement. Soit G un graphe planaire tel que G = G(V,E) avec V l’ensemble des sommets du graphe et E un ensemble d’arêtes. Soit V’ = V l’ensemble des sommets de départ et des points de Steiner. Algo : 1. Construire la DT T de V’. 2. Superposer G et T, calculer l’ensemble P des intersections des arêtes de G et T. 3. Si P n’est pas dans V’, ajouter P dans V’ et retourner en 1. Sinon, la solution est la DT T de V’. Remarque : on n’a aucune garantie sur le nombre de triangles, et on n’a aucune borne sur les angles. On sait juste que la triangulation finale est de Delaunay. 16 c) Algorithme de Nackman & Srinivasan L.R. Nackman and V. Srinivasan. Point placement for Delaunay triangulation of polygonal domains. In Proc. 3rd Canadian Conf. Comp. Geometry (1991) 37-40. Il s’agit de trianguler l’intérieur d’un polygone simple, éventuellement à trous, en ajoutant des points de Steiner sur la frontière du polygone de sorte que les arêtes de la frontière soient des arêtes de Delaunay. On parcourt chaque arête de la frontière du polygone en la subdivisant à l’aide de disques qui couvrent l’arête sans en recouvrir aucune autre. Résultat : - l’algorithme place le moins de points possible tout en maintenant la propriété du « edge-free circle » l’algorithme s’exécute en un temps O(K+NlogK) où N est le nombre de sommets du polygone et K le nombre de points de Steiner. Le nombre de points de Steiner dépend de la géométrie du polygone, et pas de sa complexité (cf exemple de Nackman : un U avec des barres plus ou moins longues, mais avec le même écart entre les deux barres). 17 d) Algorithme de Edelsbrunner & Tan H. Edelsbrunner and T.S. Tan. An upper bound for conforming Delaunay triangulations. Disc. and Comp. Geometry 10 (1993) 197-213. Il s’agit de trouver une triangulation de Delaunay conforme pour un PSLG. L’algorithme se déroule en 2 étapes : - Blocking phase : Il faut trouver des cercles qui recourent les sommets du graphe. Les cercles ont au plus un piont d’intersection. On ajoute les points de Steiner suivants : les points d’intersection des cercles avec les arêtes de départ, et les points d’intersections des cercles entre eux. Les parties des arêtes contraintes qui sont à l’intérieur des cercles sont « protected », et les autres sont dites « unprotected ». - Propagation phase : Dans cette phase on s’occupe de subdiviser les intervalles « unprotected » de sorte que ces arêtes soient de Delaunay (propriété du cercle vide). Si le cercle diamétral d’une arête « unprotected » contient un point visible du graphe augmenté, alors on subdivise l’arête en projetant ce point orthogonalement sur l’arête. On recommence jusqu’à ce que les cercles diamétraux des intervalles non protégés soient tous vides. Résultats : - Le nombre de sommet de la triangulation de Delaunay conforme est en O(m²n) tel que m est le nombre d’arêtes de départ et n le nombre de sommets du graphe de départ. - Une telle triangulation peut être calculée en temps O(m²n+n²). 18 Remarque : c’est la première fois qu’on donne une borne polynomiale (en n, nombre d’éléments initiaux) pour le nombre de points de Steiner pour parvenir à calculer une triangulation de Delaunay conforme, càd une borne qui ne dépend pas de la géométrie de la configuration initiale. e) Algorithme de Ruppert J. Ruppert. A new and simple algorithm for quality 2-dimensional mesh generation. In Proc. 4th ACM-SIAM Symp. on Disc. Algorithms (1993) 83-92. Déjà traité dans une précédente partie. 19 7. Résultats plus récents J.R. Shewchuk. Delaunay Refinement Mesh Generation. Ph.D. thesis, Carnegie Mellon University, 1997. Il prouve qu’avec l’algorithme de Chew (celui de 1993, qui est adaptatif), il est possible d’avoir une garantie sur la qualité de la taille des triangles et sur la taille du maillage (optimalité), si la borne pour l’angle minimal est inférieure à 26,5°. Si la borne de l’angle minimal est entre 26,5° et 30°, on observe que les tailles des triangles sont de bonne qualité, mais ça n’est pas prouvé. Les algorithmes de Chew et Ruppert ne finissent pas toujours si les angles initiaux sont trop petits. Dans le cas où les angles initiaux sont petits, on aimerait pouvoir trianguler sans ajouter d’angle inférieure à la borne fixée. Il a prouvé que ça n’est pas toujours possible de faire ça. Il a proposé une modification de l’algorithme de sorte qu’il s’arrête même si les angles initiaux sont trop petits. Il est cependant obligé d’insérer quelques angles inférieurs à la borne fixée, mais seulement à proximité des angles initiaux trop petits. Cette modification ne change en rien le comportement de l’algorithme dans le cas général. Enfin il a généralisé l’algorithme de raffinement de Delaunay en 3D. Edelsbrunner, Sink insertion for mesh improvement, 2001-2002 Edelsbrunner propose un algorithme de raffinement de Delaunay à base de « sink insertion » : ce choix est justifié par la qualité du maillage obtenue, sa robustesse, son temps d’exécution, et la facilité à le paralléliser. Un « sink » est le centre du cercle circonscrit à un triangle tel que ce centre soit à l’intérieur du triangle. A chaque itération, l’algorithme insère tous les « sink » des triangles qui sont tels que le ratio r/l est supérieur à une valeur fixée qui est elle-même supérieure ou égale à 1 (r est le rayon du cercle circonscrit et l est la longueur du plus petit côté). Il montre que l’algorithme s’arrête et il donne des exemples pour montrer que les « sink insertion » donnent des résultats meilleurs que les autres algorithmes connus (Chew, Ruppert). 20 Ungor, Off-centers: A new type of Steiner points for computing size-optimal qualityguaranteed Delaunay triangulations, 2004 Har-Peled, Ungor, A Time-Optimal Delaunay Refinement Algorithm in Two Dimensions, 2005 Ils introduisent un nouveau type de points de Steiner à la place des centres des cercles circonscrits aux triangles, ce sont les « off-centers ». Ils proposent un algorithme qui a les mêmes garanties que les meilleurs algorithmes connus, en terme de qualité et de taille optimale. L’avantage est que, en pratique, cet algorithme génère environ 40% de points de Steiner en moins, et environ 30% de triangles en moins que ces prédécesseurs. Radius-edge ratio = beta >= sqrt(2). Si le ratio d’un triangle est < beta, alors le off-center est le centre du cercle circonscrit. Sinon, le off-center est le point p de la médiatrice du côté le plus petit qr qui est tel que le ratio du triangle pqr vaut exactement beta. Pour le reste c’est identique à l’algorithme de Ruppert (on retire un point s’il est dans le cercle diamétral d’une arête et on insère le milieu de l’arête à la place). Ungor prouve que l’algorithme termine et le nombre de sommets est proportionnel à l’optimal : mêmes résultat que Ruppert. En pratique on constate un nombre de points nettement inférieur. 21 22