Cours de programmation séquentielle

TP noté de programmation séquentielle - Outil de triangulation

But

Énoncé

Cahier des charges

Dans ce travail pratique il s’agit de réunir tout le travail effectué durant les semaines précédentes.

  1. Votre programme devra prendre en argument un nom de fichier .las et ajouter tous les points 3D s’y trouvant dans un vecteur1.

  2. Pour des raisons de précision numérique, il faut, ensuite, translater tous vos points par rapport au premier point lu. En peudo-c cela donnerait

    points_3d *p = reader_lidar_file(&num_points);
    point_3d p0 = p[0];
    for (int i = 0; i < num_points; ++i) {
        point3d_sub_in_place(&p[i], p0);
    }
  3. Le nombre de points étant très grand, il faut d’abord “filtrer” les points, en n’en gardant qu’une portion, p (p est un nombre entre 0 et 1), d’entre eux et les stocker dans un nouveau vecteur (voir plus bas pour plus de détails). Le nombre p sera également donné en argument de votre programme (typiquement de 0.005).

  4. Effectuer la triangulation de Delaunay sur les points filtrés (rappel: la triangulation se fait sur des points 2D).

  5. Écrire un fichier STL avec la triangulation, où cette fois les sommets des triangles sont des points 3D. Le nom du fichier sera également donné en argument du programme.

Votre programme s’exécutera avec une commande du type:

$ ./triangulation input.las 0.005 output.stl

Le filtrage des points

Pour simplifier le filtrage se fera de la façon suivante. Pour chaque point chargé du fichier .las, il faut tirer un nombre aléatoire entre 0 et 1. Si ce nombre aléatoire est plus petit que p le points est ajouté à un nouveau vecteur de points.

Travail à rendre


  1. Utilisez la structure vecteur de votre choix. Pas besoin de mettre les deux que nous avons vues en exercices.↩︎