Projet d'openGL

Projet d'openGL

par Karine Berra et Christophe Prévot

Modélisation des chocs d'une bille sur les parois d'un cube



Cliquer ICI pour télécharger notre code.



A. Quelques rappels de mécanique ...

1. Entre les chocs

Nous avons considéré que notre bille était de masse unitaire, et qu'elle était soumise à la seule force de la gravité entre les chocs. Sa vitesse et sa position évoluent donc suivant les équation suivantes :

2. Lors d'un choc avec une des faces du cube

Nous avons considéré le cas où le cube est immobile. Lors d'un choc, la composante normale de la vitesse change de signe tandis que la composante tangentielle reste la même, à ceci près que la norme de la vitesse est atténuée lors du choc.



B. Calcul de la distance entre la bille et une face du cube

Nous avons considéré que notre bille est par ailleurs ponctuelle. La distance que nous cherchons est donc la distance d'un point p0 à un plan (passant par trois points p1, p2 et p3). Elle s'exprime de la façon suivante:



C. Notre algorithme



D. Nos résultats

Nous avons obtenu quelques résultats avec un comportement de la bille assez réaliste. Malheureusement il reste de nombreux problèmes.

  1. Lorsque la vitesse de la bille reste constante en norme au cours du temps, on obtient des mouvements de la bille corrects, si ce n'est lorsqu'on incline le cube avec les touches "f" et "g", la bille se bloque quelques fois ! (pour tester copier essais/cube.c sur cube.c).
  2. Lorsque la vitesse de la bille est atténuée à chaque choc, la bille sortait du cube. Nous avons alors mis en place un seuil sur l'amplitude des rebonds de la bille. Lorsqu'elle est inférieure à ce seuil, on arrête de faire bouger la bille (pour tester copier essais/cube_a.c sur cube.c).
    Cependant, cette solution ne semble pas être bonne puisque le seuil varie en fonction de l'inclinaision du cube ...
  3. Nous avons par ailleurs essayé de modifier la position de la bille en même temps que sa vitesse lors d'un choc. La position est changée en sa position symétrique par rapport au plan parallèle à la face (sur laquelle se produit le choc) et distant de celle-ci du rayon de la bille (pour tester copier essais/cube_s.c sur cube.c). Là encore les résultats ne sont pas complètement satisfisants. La bille semble sortir quelquefois du cube lorsqu'on joue avec les touches "f" et "g".
  4. Nous avons afin essayé de coupler la symétrie et le seuil sur l'amplitude (pour tester copier essais/cube_a_s.c sur cube.c) mais la bille continue de sortir du cube.

La bille est insensible au mouvements de la trackball. Mais les touches "f" et "g" permettent de faire tourner les cube pendant la simualtion


Nous sommes un peu déçu de ne pas être parvenu à un meilleur résultat. Les problèmes induit par la discrétisation sont complexes à résoudre. Peut être manque-il des étapes dans notre algorithme.