MAP-SIM2 : Génération de maillages dans une géométrie polygonale sujet proposé par Nicolas Kielbasiewicz : [email protected] 20 janvier 2016 1 1.1 Triangulation d’un polygone à C sommets Cas C = 2 : le segment Soit P1 et P2 les extrémités d’un segment. Un maillage régulier de ce segment en N éléments est i−1 défini par les sommets Vi vérifiant Vi = P1 + (P2 − P1 ) , i = 1, N + 1 N 1.2 Cas C = 3 : le triangle On va considérer dans un premier temps le triangle de référence. Soit P1 , P2 et P3 les sommets d’un triangle rectangle en P1 et on note P1 P2 = a et P1 P3 = b. P3 P1 P2 En considérant le même nombre de mailles N sur chacun des cotés du triangle, il existe un algorithme très simple pour générer la liste des sommets du maillage pour obtenir un maillage triangulaire structuré. Il suffit de commencer par mailler le segment P1 P2 , puis pour chaque point de ce maillage, de tracer la verticale jusqu’à l’hypoténuse et de mailler ce segment qui sera d’autant plus court que le point d’origine est loin de P1 . On en déduit un algorithme général qui tire partie ce de principe. Algorithme 1 Calcul des coordonnées des noeuds du maillage Entrées : P1 P2 P3 triangle isocèle rectangle de référence, N nombre de mailles sur chaque coté 1: pour i = 1, N + 1 faire 2: pour j = 1, N + 2 − i faire i−1 X 3: k=j+ N +2−l l=1 i−1 j−1 V k = P1 + (P2 − P1 ) + + (P3 − P1 ) N N 5: fin de boucle pour 6: fin de boucle pour (N + 1) (N + 2) Sorties : Vk , k = 1, 2 4: Il suffit alors de construire la liste des 3 sommets de chaque maille pour obtenir la liste des triangles. 1.3 1.3.1 Cas général L’algorithme des oreilles On désigne par oreille un triangle dont 2 des 3 cotés sont également des cotés du polygone. Pour C ≥ 3, il en existe au moins une. Si on considère un polygone orienté à N cotés, dont les sommets sont Pi alors une oreille est finalement un triangle Pi−1 Pi Pi+1 , i = 2, N − 1. Le principe de l’algorithme des oreilles est donc de construire le maximum d’oreilles à partir d’un polygone, ce qui permet d’obtenir un polygone avec un nombre de cotés strictement inférieur à N . On réitère le procédé. P5 P8 P4 P6 P7 P1 P3 P2 En prenant l’octogone initial,, on construit les oreilles P1 P2 P3 , P4 P5 P6 , ce qui permet de traiter lors d’une deuxième itération le pentagone P1 P3 P4 P6 P7 , pendant laquelle on construit les oreilles P1 P3 P7 et P3 P4 P6 . Il reste le polygone P3 P6 P7 , qui est un triangle. L’algorithme s’arrête. 1.3.2 Notion de triangle admissible Il faut faire attention à ce que l’oreille considérée respecte les 2 critères suivants : — le triangle doit être à l’intérieur du polygone. Ex : P5 P6 P7 n’est pas admissible — aucun autre sommet du polygone ne se trouve à l’intérieur du triangle. Ex : P3 P4 P5 n’est pas admissible Plusieurs questions se posent : — Comment choisir le sommet de départ à chaque itération ? — Comment estimer la qualité du triangle construit ? — Comment estimer si le triangle est admissible ? — Comment améliorer la qualité de la triangulation ? — Que faire si toutes les oreilles possible à une itération donnée sont de mauvaise qualité ? 1.3.3 Définir la qualité des triangles Pour définir la qualité d’un triangle, on va faire appel à un critère de forme. Les critères de forme comparent un triangle au triangle le plus régulier qu’est le triangle équilatéral. Le critère optimal est donc atteint pour un triangle équilatéral, et le critère est nul pour les triangles dégénérés (pour lesquels les 3 sommets sont alignés). Il existe une infinité de critères de forme. On se concentrera sur l’un d’entre eux qui demande de calculer le rapport entre le rayon du cercle inscrit au triangle et le rayon du cercle circonscrit au triangle. Soit a, b et c les 3 longueurs du triangle K considéré. On note PK le demi-périmètre, SK l’aire de K, ρK le rayon du cercle inscrit à K et rK le rayon du cercle circonscrit à K. On a les formules suivantes : 2 PK SK ρK rK 1.3.4 a+b+c 2 = PK (PK − a) (PK − b) (PK − c) SK = PK abc = 3SK = (formule de Héron) Choisir le bon sommet de départ Estimer la qualité d’un maillage revient à sommer le critère de forme de chaque triangle du maillage. Une façon de procéder est donc de choisir les oreilles de meilleure qualité. On commence par la meilleure, puis la meilleure parmi les oreilles encore possibles et ainsi de suite jusqu’à ne plus pouvoir choisir d’oreilles. 1.3.5 Améliorer la qualité de la triangulation Une fois la triangulation obtenue, on peut améliorer la triangulation à l’aide du critère du Delaunay : pour chaque triangle, le cercle circonscrit ne doit contenir aucun autre sommet du polygone. C’est le cas dans la figure ci-dessous du triangle P4 P5 P6 . Dans le cas contraire, on supprime l’arête commune aux 2 triangles considérés et on la remplace par l’autre arête possible (l’arête P2 P7 dans le cas du triangle P1 P3 P7 ). C456 P5 P5 P8 P8 P4 P4 P6 P6 P7 P1 P7 P3 P1 P2 P3 P2 C137 3 2 2.1 Eléments de conception L’objet Point Un sommet est entièrement défini par ses coordonnées. On définira la classe Point comme héritant de la classe vector de la STL. 2.2 L’objet Polygone Un polygone est défini par ses sommets. La classe Polygone comprendra donc entre autres un vecteur de Point. Il contiendra aussi le résultat de sa décomposition à l’issue du déroulement de l’algorithme des oreilles sous la forme d’un vecteur de pointeurs sur un objet Polygone. 2.3 L’objet Triangle Un triangle est un polygone à 3 sommets. Il en découle que la classe Triangle hérite de la classe Polygone. 2.4 L’objet Maillage Un maillage est constitué de l’ensemble des points définissant les sommets du maillage, de l’ensemble des triangles constitutifs de la triangulation et des éléments de bords, définis relativement à leur parent. 3 Organisation du travail (3p) Après s’être concerté sur la définition des classes et du prototype des fonctions, le travail pourra être réparti de la façon suivante : — définition des classes élémentaires Maillage, Point, Polygone et Triangle avec export du maillage vers le format Paraview pour visualisation, ainsi que la réalisation des tests de validation — implémentation de l’algorithme des oreilles et du critère de Delaunay — implémentation du maillage sur un triangle, ainsi que de la construction du maillage final 4