Dans cette partie, nous allons rapidement détailler les classes et leurs relations. L’affichage des objets se fait via l’API OpenGl. <h1>La classe Objet</h1> La classe objet est la classe mère des toutes les primitives graphiques. Elle possède les paramètres communs à tous les objets : <ul> <li>Masse</li> <li>Position, Vitesses, Accélération </li> <li>Matériau</li> <li>Nombre de collisions</li> </ul> Concernant les méthodes, cette classe possède principalement des accesseurs. Cependant, la méthode d’affichage est une méthode virtuelle pure, ce qui rend cette classe abstraite. <h1>La classe Sphère</h1> Cette classe hérite de la classe objet. Elle définit les paramètres propres à la sphère. Elle surcharge la méthode d’affichage, on soulignera ici la méthode pour texturer une sphère.

<code cpp> glPushMatrix(); GLUquadric* params = gluNewQuadric(); //création d’une quadrique gluQuadricTexture(params,GL_TRUE); //activation des coordonnées de texture glTranslatef( m_vPos.x, m_vPos.y, m_vPos.z); gluSphere( params, m_fRayon, 30, 30); glPopMatrix(); gluDeleteQuadric(params); //je supprime la quadrique Il ne faut en effet pas passer par la fonction GLUT, mais plutôt par la création d’une quadrique.<br />&lt;/code&gt; <br /><h1>La classe Plan</h1> <br />&nbsp;A partir des 3 points du plan fournis au constructeur, on calcule le dernier point et la méthode d’affichage affiche un simple quad texturé. La classe Box Une box est une boite qui possède sont propre repère local. Ainsi, il suffit de modifier les axes pour changer l’orientation de la boîte. On peut alors se passer de toutes fonctions de transformation d’OpenGl. La méthode d’affichage se résume à afficher de 6 quads texturés. Le fichier PhysicEngine.cpp Il s’agit du point d’entrée du programme. Les méthodes OpenGl y sont définies ainsi que la scène et la caméra. La boucle principale permet de passer le temps écoulé depuis la dernière frame à la scène. De plus, le parseur de scène se trouve ici et est exécuté lors de l’initialisation d’OpenGl. Au niveau des textures, elles sont chargées à ce moment-là et l’index de la texture est stocké dans le matériau. La classe Scène Il s’agit du cœur du moteur. Elle contient trois objets du type list de la Standard Library :

  • La première contient tous les objets
  • La seconde tous les matériaux
  • La dernière répertorie toutes les intersections de la frame courante

Dans cette classe sont définies les méthodes d’intersection (détection) et de calcul de la réponse (gestion). De plus, à chaque frame, la scène met à jour la dynamique des objets. La classe Image Cette classe associée au fichier tga.cpp permet de lire et de charger les textures de format *.tga via l’objet Image_Manager. La classe Matériau Elle conserve l’index de la texture chargé par OpenGl. Les coefficients de frottements et de glissement permettent de modifier la réponse de l’objet.