Projet de Fondamentaux pour l'Informatique Graphique

Ce projet consiste à appliquer les méthodes vues en cours pour résoudre des problèmes géométriques dans le plan et l'espace affine.

Par binômes, vous devez rendre un fichier avec votre solution et du code Python ou C++ pour vérifier votre solution.

Sujets

Deux sujets sont proposés. Pour chaque sujet il y a un fichier en format JSON avec les données du problème. Chaque sujet doit être choisi par au moins deux binômes.

Sujet 1 : remaillage d'un polygone

Étant donné un polygone avec \(n\) segments, vous devez calculer un nouveau polygone tel que :

  1. Le nouveau polygone a au plus \( 10 n\) segments.
  2. Aucun segment du polygone est plus de deux fois plus long qu'un autre.
  3. L'angle entre deux segments adjacents doit être supérieur à \( 3 \pi / 4\) radians.

Avec ces contraintes il faut construire le polygone le plus proche du polygone donné. Quelques précisions :

Sujet 2 : recouvrement de points par de tétraèdres

Étant donnée une liste de \(n\) points dans l'espace, trouvez \(n\) tétraèdres tels que :

  1. Chaque tétraèdre contient exactement un point dans son intérieur.
  2. Chaque point se trouve à l’intérieur d'un tétraèdre (c'est une conséquence de la contrainte précédente).
  3. Deux tétraèdres ne peuvent pas s'intersecter.
  4. Les tétraèdres sont contenus dans la boîte englobante \( [0, 10]^3 \).

Avec ces trois contraintes il faut construire la liste de tétraèdres avec le plus grand volume. Quelques précisions :

Modalités de rendu

Le projet est à réaliser en binôme.

Pour le rendu, un des membres du binôme déposera une archive appelée fig-projet.zip ou fig-projet.rar sur AMeTICE.

L'archive doit contenir :

La date limite de rendu est le mercredi .

De plus, je vous encourage à faire votre projet sur le serveur Gitlab de l'université Etulab et de m'inviter sur votre projet.

Évaluation

Votre travail sera évalué sur la qualité des algorithmes, du code et de vos explications. De plus, le meilleur binôme sur chaque sujet aura un bonus.

La note du projet sera calculée avec ce barème :

Partie Barème
Algorithmes. Les calculs sont correctement implantés en exploitant bien les informations fournies. 7
Code. Le code est bien commenté et factorisé. 7
Rapport. Explications claires et bien rédigées. 6

Résultats

Aucune solution était valide.

Sujet Binôme Score
#1 Raphaël C, Abdelmalek B, Alban SS
Étienne RB, Fatma J, Loïc L
Lucie C, Charlène P0.111703
Ève R, Florent A
#2 Tom DB, Benjamin T
Lotfi G, Ilyas EM

F.A.Q.

Peut-on utiliser de librairies externes ?
Non, vous devez vous-même implanter les fonctions du programme qui vérifie votre solution. C'est ainsi que vous démontrerez que vous avez compris les contenus de ce cours.
Faut-il rendre le code qui calcule la solution ?
Non. Vous avez donc droit à utiliser des librairies externes pour calculer votre solution.
Comment lire et écrire un fichier JSON ?
En Python vous avez le module json dans la bibliothèque standard. En C++ vous pouvez utiliser la librairie rapidjson.
Peut-on rendre plus de fichiers ?
Vous pouvez séparer le code de votre vérificateur de solutions en plusieurs fichiers si ça améliore sa lisibilité, mais l'’'exécutable doit s’appeler checker.*.