TD 1 - Planar point location


Localisation dans une triangulation planaire

Maintenant on va se familiariser avec des objets géométriques plus structurés, tels que les maillages. En particulier, le but de cette partie est de vous illustrer le fonctionnement de la classe Polyhedron_3, permettant de représenter des maillages surfaciques (orientables).

Du point de vue combinatoire, on a vu en amphi qu'une surface combinatoire de genre 0 correspond à un graphe planaire: c'est aussi pour cette raison que la classe Polyhedron_3 est une classe générique, parametrée par le type de point qu'on veut associer au sommet du maillage, ce qui en java se traduit par:
Polyhedron_3<X extends Point_>

Localisation par marche aléatoire

Ici on vous demande d'implanter l'algorithme de localisation dans une triangulation planaire basé sur une marche aléatoire (vu en amphi).
On part d'un point q choisi au hasard dans la triangulation et on trace le segment (pq), où p est le point qui doit etre localisé.

But: écrire un programme qui permet de localiser p dans la triangulation
Sortie de la méthode de localisation: une demi-arete appartenant à la face qui contient p.

Encore une fois on met à votre disposition le squelette de la classe PointLocation_RandomWalk dans le fichier PointLocation_RandomWalk.java, qui contient les signatures des méthodes à compléter, ainsi qu'une fonction main qui permet de tester votre code (une fois écrit).

Conseil: voici quelques unes des classes et méthodes dont vous aurez besoin dans cet exercice:
Dans le fichier PointLocation_RandomWalk.java, vous avez aussi une méthode permettant de charger en mémoire une triangulation planaire pour tester votre code.

Conseil: vous pouvez procéder à la solution de cet exercice en complétant, étape par étape, les différentes fonctions fournies dans le fichier .java ci-dessus.
Comme expliqué par exemple par:
    /**
* Compute and return the barycenter point of a given face
*/
public static Point_2 createCenterVertex(Face<Point_2> f){
//throw new Error("a completer: etape 1");
}