Dans le prolongement de ma question précédente : j'ai la balle qui rebondit de façon assez réaliste sur les surfaces qu'elle frappe. Maintenant, je voudrais faire tourner le frottement du coup .
Montrer cela est assez simple: je fais tourner la balle par sa vitesse angulaire à chaque tick et applique la même rotation lorsqu'elle est rendue.
Quand une balle frappe un mur, je sais que la vitesse de rotation est affectée par ...
- la vitesse initiale de la balle en frappant la surface
- les coefficients de frottement de la balle et de la surface (constantes physiques)
- l' angle d'incidence (l'angle entre le vecteur de vitesse entrant de la balle et la normale à la surface).
L'angle d'incidence est approximé par le produit scalaire des vecteurs d'impact et de vitesse de sortie de la balle. (1 signifie spin élevé, -1 signifie pas de spin, et tout le reste relativement entre les deux)
En multipliant tous les éléments ci-dessus et en veillant à ce qu'ils soient ensuite transformés dans la plage de 0 à 1, et multipliés par la vitesse de rotation maximale, la balle semblait répondre à la vitesse de rotation comme prévu. Sauf pour une chose: il tournerait toujours dans le sens horaire (à cause des valeurs positives).
Est-ce une bonne méthode? Pouvez-vous penser à un moyen plus simple?
Si cette méthode semble correcte, que me manque-t-il? Comment savoir quand la balle doit tourner dans le sens antihoraire?