Logo

décembre 2023


Contexte : cours de programmation avancée et projet à l’ENSIIE

Durée : 1 mois

Langage(s) de programmation : C++

Outils et logiciels utilisés : GitLab, Doxygen, bibliothèque SDL

Composition de l'équipe : binôme


Notre projet a pour but la construction d'un moteur 3D. Ce projet a été réalisé en C++ et nous avons utilisé la bibliothèque SDL pour la gestion de l'affichage. Cette dernière permet un affichage 2D de figures géométriques. Nous avons donc dû créer un ensemble d'objets en 3 dimensions (triangles, quadrilatères, sphères). Par la suite, nous avons projeté nos objets sur un plan pour pouvoir les afficher en 2 dimensions à l'aide de la bibliothèque SDL.



Ma participation

  • Classes Vector3 et Triangle3d : Implémentation des classes Vector3 et Triangle 3d. Ces classes sont à l'origine de toutes les structures du moteur. Dans ces classes, on retrouve les constructeurs (par défaut, valué et de copie), des getters et setters pour les attributs privés, ainsi que des surcharges d'opérateurs si nécessaire (operator+, operator-, ...). Dans la classe Vector3, on retrouve également des méthodes permettant de réaliser un produit scalaire, un produit vectoriel ou encore une méthode pour normaliser le vecteur. Enfin, dans la classe Triangle3d, on peut retrouver une méthode permettant de déplacer le triangle selon un delta ou bien une méthode permettant de multiplier le triangle par une matrice.
  • Classe Matrix : implémentation de la classe Matrix qui définit toutes les matrices de rotation ainsi que la matrice de projection. Une méthode permettant la multiplication d'un vecteur avec une matrice est également présente, ainsi que certaines surcharges d'opérateurs classiques.
  • Tests unitaires : Je me suis chargée de réaliser les tests unitaires pour les méthodes que j'avais implémentées afin d'en vérifier le bon fonctionnement.
  • Documentations : Durant ce projet, la documentation a été générée à l'aide de Doxygen. Pour cela, le code a dû être commenté au fur et à mesure du projet.
  • Gestion de l'affichage avec SDL : Je me suis occupée de l'affichage de nos éléments à l'aide de la librairie SDL. Ainsi, je me suis chargée de gérer l'affichage de la fenêtre, de même que l'affichage de nos objets.
  • Gestion des événements : Finalement, je me suis chargée des différents événements possibles (fermer la fenêtre, faire tourner les objets, gestion du zoom, déplacement de la caméra).