Projet Maillage et Visualisation 3
où (., .)est le produit scalaire de IR2.
1.2 Structure de données
Nous allons prendre une structure orientée sommet. C’est-à-dire que chaque sommet aura la double liste
des sommets connectés tournant dans le sens direct. Les triangles ne seront connus que virtuellement.
Je vous conseille d’utiliser la STL pour écrire ce logiciel.
Nous avons besoin d’un algorithme de localisation pour trouver le triangle virtuel qui contient un point.
Il faut quelque peut changer l’algorithme de promenade du cours car nous n’avons pas de triangles mais
seulement des sommets connectés.
Algorithme 2
Partant d’un sommet s, trouver les 2 sommets concécutifs (s,a)et (s,b)du sommet s
(où a et b sont les 2 autres sommets des arêtes), tournant dans le sens trigonométrique,
telles que les aires signées des 2 triangles A =aire(a,p,s)et B =aire(b,s,p)soient
positives.
Soit C =aire(a,b,s)l’aire signé du triangle . Si C ≥0et C −A−B≥0alors le point
p dans le triangle s,a,b sinon choisir aléatoirement le nouveau point s entre les points
a et b et continuer.
1.3 À faire pour le projet 1
Programmez l’algorithme 1 . Faite une étude de la complexité des algorithmes, et une vérification nu-
mérique de la complexité. Une option de visualisation pas à pas pour comprendre de déroulement du pro-
gramme est impérative avec gnuplot.
Pour finir, il faut écrire un fichier maillage au format .msh, pour que freefem++ puisse le lire.
2 Sujet 2 : Interpolation de solution
Le but est d’écrire une programme qui interpole une solution élément fini P
1Lagrange définie sur un
maillage convexe, sur un autre maillage du même domaine convexe.
Pour faire cela, vous aurez à écrire l’algorithme de recherche d’un triangle Kdans un maillage convexe
Thcontenant un point (x,y)suivant :
Algorithme 3
Partant du triangle K,
Pour les 3 arêtes (ai,bi),i=0,1,2du triangle K, tournant dans le sens trigonomé-
trique, calculer l’aire des 3 triangles (ai,bi,p). Si les trois aires sont positives alors
p∈K (stop), sinon nous choisirons comme nouveau triangle K l’un des triangles
adjacents à l’une des arête associée à une aire négative (les ambiguïtés sont levées
aléatoirement).
2.1 À faire pour le projet 2
1. Construire une classe maillage formée d’un tableau de sommets et d’un tableau de triangles, qui lit le
fichier maillage.
2. Construire une méthode dans la classe maillage donnant le triangle K0adjacent d’un triangle Kopposé
à son sommet i∈ {0,1,2}. La complexité de cette fonction doit être constante après bien sur une
unique initialisation en O(nT)ou O(nTlog2(nT)).
Pour cela vous pourrez utiliser le chapitre chaîne et chaînage.
3. Programmez l’algorithme 3 en partant d’un triangle quelconque (ajoutez une nouvelle méthode de la
classe maillage).