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 :

Vous devez envoyer un première solution le lundi 20 novembre 2023 afin de valider vos solutions et de faire un premier classement. Déposez votre solution (en format JSON) sur AMeTICE.

La date limite de rendu est le lundi 11 décembre 2023 à 23h00.

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 en utilisant les notions géométriques apprises en cours. 6

Résultats

Sujet Binôme Score
#1 Étienne M0.02598210 meilleure solution
Florian M, Lucas B0.48900501
Alexis R, Mohammed Enon valide
Tom C, Jaona Rnon valide
Ilyas EM, Thim Rnon valide
#2 Kilian D, Jinhua W0.00730709 meilleure solution
Jeff A, Astrid B0.00666692

Sans binôme ni sujet : Léa A, Camil B, Billy C, Axel P.

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.*.