LA TESSELATION DE VORONOÏ : Diagramme de Voronoï à germes pondérés
1. LA TESSELATION DE VORONOÏ
Diagramme de Voronoï à germes pondérés
Réalisé par : ELMALEKI Anas & ANNAKI Sara
2. 1
Introduction
Afin de mettre en pratique ce qui était vu en module de la Géométrie algorithmique
& analytique, et aussi de concrétiser nos connaissances en informatique. Un projet
nous a été soumis sous des directives bien précises.
La géométrie algorithmique a pour but le développement et l’étude d’algorithmes
pour résoudre des problèmes de géométrie. C’est une discipline très ancienne.
De manière plus récente, la géométrie algorithmique s’est développée à partir des
années 1970 en réponse à des problèmes de conception assistée par ordinateur, de
robotique, de géographie, d’infographie, de conception de circuits intégrés, etc.
3. 2
I. Propriétés mathématiques
Le diagramme de Voronoï d’un ensemble S de n points de 𝑅 𝑚
est une partition de
l’espace en n cellules représentant les zones d’influence des points de S : la cellule
de Voronoï d’un point x de S est constituée de l’ensemble des points plus proches
de x que de tout autre point de S. La triangulation de Delaunay de S est l’unique
triangulation de S dont tout simplexe admet une boule circonscrite qui ne contient
aucun point de S (à part les sommets du simplexe).
Diagramme de Voronoï :
Soit S un ensemble fini de n points du plan affine ; les éléments de S sont
appelés germes.
On appelle région de Voronoï ou cellule de Voronoï associée à un élément p de S
l’ensemble des points qui sont plus proches de p que de tout autre point de S.
Pour deux point a et b de S, l’ensemble Π(a,b) des points équidistant de a et b est un
hyperplan affine (un sous-espace affine de dimension 1). Cet hyperplan est la
frontière entre l’ensemble des points plus proche de a que de b, et l’ensemble des
points plus proches de b que de a.
On note H(a,b) le demi espace délimité par cet hyperplan contenant a, il contient
alors tout les points plus proches de a que de b. La région de Voronoï associée à a
est alors l’intersection des H(a,b) où b parcourt S{a}.
5. 4
Triangulation de Delaunay et relation avec les diagrammes de
Voronoï :
La triangulation de Delaunay d’un ensemble discret P de points est le graphe
dual du diagramme de Voronoï associé à P.
Les sommets du diagramme de Voronoï sont les germes des cercles circonscrits des
triangles de la triangulation de Delaunay. Les arêtes du diagramme de Voronoï sont
sur les médiatrices des arêtes de la triangulation de Delaunay.
Chaque germe du diagramme de Voronoï constitue un sommet dans la
triangulation de Delaunay. Ces sommets sont reliés entre eux par une arête si et
seulement si les cellules sont adjacentes.
Exemples :
Figure 3 : Machu Picchu (une ancienne cité inca)
6. 5
II. Programmation
La partie réalisation a été faite en deux :
Une partie qui a été programmé sous MATLAB et qui traite le cas du
Diagramme de Voronoï et Triangulation de Delaunay sans poids.
Ensuite, une deuxième partie programmée en JAVA traitant le Diagramme
de Voronoï avec poids.
Diagramme de Voronoï sans poids et triangulation de Delaunay :
Nous avons choisi d’utiliser Matlab comme langage de programmation pour cette
première vu que dans ce langage il y’a déjà des fonctions prédéfinies. Donc nous
avons en profité
Cette phase d’application a pour objectif d'aborder les concepts du Diagramme de
Voronoï et de Triangulation de Delaunay d'une façon pratique.
Les données :
𝑷 𝟏(-1, 1) ; 𝑷 𝟐 (1,2) ; 𝑷 𝟑 (2,3) ; 𝑷 𝟒 (6,1.5) ; 𝑷 𝟓 (4,-1) ; 𝑷 𝟔 (-4,0.5) ; 𝑷 𝟕 (4,-1) 𝑷 𝟖 (-4,0.5) ;
𝑷 𝟗 (3,-2) ; 𝑷 𝟏𝟎 (-1,-2)
Code Matlab du diagramme de Voronoï sans poids :
x=[-1, 1, 2, 6, 4, -4, 4, -4, 3, -1];
y=[1, 2, 3, 1.5, -1, 0.5, -1, 0.5, -2, -2];
TRI = delaunay(x,y);
subplot(1,2,1);
plot(x,y,'.r'); % tracer les points
hold on; % ajouter une autre figure
triplot(TRI,x,y,'g'); % tracer les triangles de Delaunay
axis([-8 8 -8 8]);
title('Diagramme de Delaunay');
[vx, vy] = voronoi(x,y,TRI);
subplot(1,2,2);
hold on; % ajouter une autre figure
plot(x,y,'r.',vx,vy,'b-'); % tracer le diagramme de Voronoi
axis([-8 8 -8 8]);
title('Diagramme de Voronoi'); hold off
7. 6
voronoi (x, y) : permet de représenter le diagramme de Voronoï d'un ensemble des
points. Elle prend comme paramètres les deux vecteurs x et y.
delaunay(x, y) : permet de représenter la triangulation de Delaunay d'un maillage
des points. Elle prend en paramètres deux vecteurs et retourne les triangles de la
triangulation de Delaunay.
triplot() : utilisée pour afficher des triangles.
Figure 4 : Diagrammes de Voronoï et de Delaunay (Matlab)
Diagramme de Voronoï avec poids :
Concernant cette deuxième partie, nous avons opté pour JAVA comme langage de
programmation vu nos connaissances avancées en ce langage.
Le problème est de visualiser l’évolution dynamique des points avec poids et leur
influence sur le diagramme de VORONOI qui les associe en fonction du paramètre
temps. Selon la fonction : 𝑑(𝑀, 𝑃𝑖) = ‖𝑀𝑃𝑖
⃗⃗⃗⃗⃗⃗⃗ ‖ − 𝜔𝑖
Les données :
Les points :
𝑷 𝟏(-1, 1) ; 𝑷 𝟐 (1,2) ; 𝑷 𝟑 (2,3) ; 𝑷 𝟒 (6,1.5) ; 𝑷 𝟓 (4,-1) ; 𝑷 𝟔 (-4,0.5) ; 𝑷 𝟕 (4,-1) 𝑷 𝟖 (-4,0.5) ;
𝑷 𝟗 (3,-2) ; 𝑷 𝟏𝟎 (-1,-2)
Les poids :
8. 7
𝜔1(𝑡) = 2 − 𝑡 𝜔2(𝑡) = 1 + 2𝑡2
𝜔3(𝑡) = 2 𝜔4(𝑡) = 1 + 𝑒 𝑡
𝜔5(𝑡) = 2 − 𝑒 𝑡
𝜔6(𝑡) = 3𝑡 𝜔7(𝑡) =
1
1+𝑒 𝑡
𝜔8(𝑡) = 𝑡 + 1 𝜔9(𝑡) =
𝑡+1
𝑡+2
𝜔10(𝑡) =
1
1+𝑡2
Simulation :
Pour pouvoir voir le diagramme de Voronoï associé aux points 𝑷𝒊 et à leur poids
𝝎𝒊 en dynamique, vous devriez visualiser la vidéo jointe au dossier.
9. 8
Interprétation :
- Le diagramme de Voronoï fournit une définition naturelle de voisinage :
deux points sont voisins si leurs régions de Voronoï sont voisines, c’est-à-
dire partagent une facette de Voronoï.
- Les cellules de Voronoï changent en fonction de leurs poids avec le temps.
- Quand les poids de deux germes dont les cellules sont voisines ne sont pas
égaux, l’intersection de celles-ci n’est plus une médiatrice mais plutôt un
arc (polynôme du 2ème degré).
Conclusion
En guise de conclusion, nous pouvons dire que nous avons tiré profit de ce projet,
et cela en mettant en pratique les notions théoriques étudiées au cours du module
de Géométrie algorithmique et analytique.
Au niveau personnel, le travail d’équipe nous a amené à avoir un esprit collectif.
Finalement, nous tenons à vous remercier professeur, vous qui nous a offert une
précieuse opportunité où nous avons pu manipuler des logiciels et des méthodes
de haut niveau.