mercredi, juin 08, 2005

Changement drastique

Étant donné que le OpenGL c'est trop compliqué et qu'il me reste peu de temps avant la remise, après avoir discuté avec le prof lors des présentations intermédiaires j'ai décidé de changer de projet.

Je garde le thème des collisions mais ce n'est plus un jeu et ça ne sera pas graphique.

Mon programme simulera le montage suivant :
On laisse tomber une patate de masse m et placée à une certaine hauteur. En dessous, il y a une trampoline qui est placée en angle parce que sa patte de gauche est élevé par une pile d'un certain nombre de biscuits. À cause de ça, la patate va rebondir vers la droite et va aller rebondir un certain nombre de fois sur une route incliné d'un certain angle teta. Je calcule:
  1. La position de la patate à tous les xième de seconde
  2. la hauteur maximale atteinte par la patate sur la route
  3. le nombre de rebond sur la route (celui de la trampoline exclue)
(je vais uploadé un dessin de la situation bientôt)

Concept scientifiques utilisés :
  • collisions
  • gravité
  • math vectoriel (vecteurs, projection scalaire, inversion (vecteur normal), etc)
  • trigonométrie
  • etc

Pour ce qui est de la programmation, je vais avoir les objets (classes) suivants ainsi que les paramètres de calcul suivants:
  • nF_patate
    • masse
    • K (constante de rebondissement)
  • nF_trempoline
    • nb de biscuits
    • K
  • nF_route
    • angle
    • K
  • nF_biscuit
    • épaisseur
  • nF_calculateur
    • aucun paramètre

Pour ce qui est des variables membres qui servent à calculer, ça ressemble à ça:
  • nF_patate
    • vecteur position
    • vecteur vitesse
  • nF_trempoline
    • angle en radian
    • angle sous forme vectoriel
    • exemplaire d'un biscuit
  • nF_route
    • angle en radian
    • angle sous forme vectoriel
  • nF_biscuit
    • aucune autre variable
  • nF_calculateur
    • contient un exemplaire de chacun des objets ainsi que les fonctions pour faire bouger tout ça ainsi que faire les calculs
Et maintenant, les fonctions membres:
OK, outre les très ennuyeuses fonctions get et set pour les variables membres (et j'en ai beaucoup, tous privées!), j'ai une fonction pour calculer les collisions entre la patate et la route, pour transformer une pile de biscuit en angle pour la trempoline, pour calculer les déplacements de la patate (genre «déplacement d'un projectiles» (hey, c'est genre le projet à Julien ça?!?)), pour calculer le vecteur vitesse après un boing (notion de collisions), etc.

Mais finalement, à quoi ressemblera le programme?
Je suis le premier triste à annoncer qu'il ne sera pas en OpenGL parce que c'est trop complexe. J'était bien parti mais j'était incapable de contrôler la vitesse de défilement des images. Je suis aussi pas mal frustré à l'idée de ne pas avoir le temps de faire du graphique pentoute. Faque finalement, on doit s'attendre à une belle fenêtre console noire avec un défillement d'un paquet de chiffre (coordonnées de la patate à tout les xième de seconde) et finalement le nombre de bonds et la hauteur max de la patate sur la route.