A mon avis, t'as un problème algorithmique car tu fais:
T'as un défaut d'algorithme, en effet:
• Si (Y + rY + vY) > maxY => tourner la bille (= la faire rebondir) mais le déplacement se fait encore par rapport à la valeur non-tournée (bille non-rebondie), donc la bille traverse légèrement le mur, et sa vitesse Y s'inverse
• Au tour de boucle suivant, tu refais un calcul et si la vitesse (inversée précédemment) ne permet pas de revenir dans la zone de jeu (possible à cause du epsilon machine), alors tu ré-inverses la vitesse
• Et ainsi de suite: si la bille sort du plateau, elle peut ne jamais y revenir avec une vitesse qui s'inverse à chaque tour de boucle
J'upload l'exemple une fois rentré chez moi.
PS: Ah ouais, ok... je comprends mieux le "+90"... t'empiles les couches de complexification: pourquoi inverser sin() et cos() dans le calcul de X et de Y (ce qui t'oblige à parachuter un +90 ailleurs)?
T'as un défaut d'algorithme, en effet:
• Si (Y + rY + vY) > maxY => tourner la bille (= la faire rebondir) mais le déplacement se fait encore par rapport à la valeur non-tournée (bille non-rebondie), donc la bille traverse légèrement le mur, et sa vitesse Y s'inverse
• Au tour de boucle suivant, tu refais un calcul et si la vitesse (inversée précédemment) ne permet pas de revenir dans la zone de jeu (possible à cause du epsilon machine), alors tu ré-inverses la vitesse
• Et ainsi de suite: si la bille sort du plateau, elle peut ne jamais y revenir avec une vitesse qui s'inverse à chaque tour de boucle
J'upload l'exemple une fois rentré chez moi.
PS: Ah ouais, ok... je comprends mieux le "+90"... t'empiles les couches de complexification: pourquoi inverser sin() et cos() dans le calcul de X et de Y (ce qui t'oblige à parachuter un +90 ailleurs)?