HOME UP Stage de DEA

Graphes de visibilité d'objets courbes


Introduction

Le graphe de visibilité devient ici le graphe de tangence. Une bitangente libre est un segment de droites dans l'espace libre tel que chaque extrémités soient sur le bord d'un objet et que le segment soit tangent en cette extrémité à cet objet. Les sommets du graphe de bitangence sont les extré des bitangentes libres et les arêtes relient deux sommets s'ils sont reliés par une bitangente où s'ils sont consécutifs sur la frontière d'un objet (figure 1).

graphe tangence
Fig. 1 -- Graphe de tangence.

Dans ce stage de DEA, le graphe de tangence est construit par l'algorithme de Pocchiola et Vegter [PV93] qui effectue un balayage droit du complexe de visibilité. Ce balayge est effectué grâce à un graphe auxiliaire.

Étant donnée une direction t, les tangentes aux objets de direction t sont représentées par un sommet. Ces tangentes découpent l'espace en régions, et deux tangentes bordant une même région sont reliées par une arête (figure 2).

graphe de coupe
Fig. 2 -- Découpage selon une direction et graphe associé.

Ce graphe est modifié quand on fait varier t lorsque t passe par la pente t0 d'une bitangente. L'algorithme de calcul du graphe de tangence consiste à maintenir ce graphe quand t varie (de 0 à 2Pi par exemple). La mise à jour du graphe se fait en temps constant à chaque passage d'une bitangente (exemple figure 3).

mise a jour graphe
Fig. 3 -- Mise à jour du graphe lors du passage d'une bitangente.

Une queue de priorité sert à passer les bitangentes dans l'ordre de leur pente, et l'algorithme s'exécute en temps O(k log n)n est le nombre d'objets et k le nombre d'arêtes du graphe de tangence.

Pocchiola et Vegter ont depuis élaboré un algorithme optimal de balayage (en temps O(n log n + k)) grâce au concept de pseudo-triangulation.

Résultats experimentaux

J'ai programmé cet algorithme. Vous pouvez voir le résultat sur quelques petites scès. Vous pouver cliquer sur les images pour avoir les images grandeur nature (format GIF).

Objects Convexes

Demo Programme, Resultat

Objects courbes

La version complète de l'algorithme de Pocchiola et Vegter [PV93] calcule le graphe de visibilité d'une scène d'objets courbes (qui ne sont plus forcément convexes). J'ai aussi programmé cet algorithme, et vous pouvez en voir le résultat sur quelques scènes.

Variations sur un haricot et une spirale :

Scene haricot1, Scene haricot2, Scene spirale1, Scene spirale2

Une scène abstraite et une pieuvre jongleuse.

Scene abstraire, Scene pieuvre


Dernière mise à jour : 27 janvier 1997 -- Stéphane Rivière
S.Riviere@univ-mulhouse.fr