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?
la source
Obtenez d'abord la surface tangente à la surface normale: t = (ny, -nx)
Ensuite, vous pouvez obtenir la composante de vitesse le long de la surface sous la forme vt = v dot t .
Vous pouvez maintenant calculer la rotation de la balle: w = | ( normal * r) traverser vt |, où r est le rayon de la balle.
Ici, je suppose que la balle n'a pas d'inertie en rotation et commence à tourner instantanément à la vitesse qu'elle aurait si elle roulait le long de la surface. Vous pouvez utiliser un coefficient de frottement pour le rendre plus réaliste et, si vous le souhaitez, prendre en compte l'inertie en rotation de la balle.
la source
Ok, cela peut sembler stupide, mais vous n'utilisez pas le produit scalaire du vecteur de la balle et la surface normale et vous faites juste un arccos pour calculer l'angle, n'est-ce pas? Parce que l'angle serait positif, qu'il soit positif (jusqu'à 90 degrés) ou négatif (idem) car le cosinus est symétrique autour de 0.
Si tel est le cas, au lieu d'utiliser la normale du plan, utilisez la direction du plan elle-même et soustrayez 90 degrés de l'angle, de sorte que 0 à 180 deviendrait de -90 à +90 degrés (ou de moitié PI à + moitié PI si vous êtes radialement incliné).
la source
La première chose à laquelle vous devez répondre est de savoir si la vitesse de rotation ou la rotation avant de toucher le mur; disons Si; est supérieur, égal ou inférieur à la valeur nécessaire pour maintenir le même spin après avoir frappé, par exemple Ss. Avec cela, vous pouvez obtenir le réel après avoir frappé le spin, disons Se, en utilisant une valeur de frottement entre la balle et la surface
Obtenez la composante de vitesse à travers la surface de rebond Vxi = Vi dot Vx, étant Vx un vecteur parallèle à la surface de magnitude 1.
La valeur que vous recherchez est Ss = Vxi / r, c'est pour transformer Vxi en vitesse angulaire. Si Si est inférieur à Ss, la balle devrait gagner positivement en spin. Si Si est égal à Ss, la balle devrait conserver approximativement la même rotation, à ce sujet plus tard. Si Si est supérieur à Ss, la balle devrait perdre sa rotation
les pertes et le gain de vitesse dépendent de la valeur de frottement Fr. En fait, c'est un croisement entre le rayon et la force de friction, mais vous pouvez définir cette valeur comme vous le souhaitez.
Vous devez également remarquer qu'en plus du rebond, la balle perd de l'énergie en raison d'un frottement entre la balle et la surface, donc Vxi est affecté négativement. Je dirais que le rebond coef affecte Vy et le frottement affecte Vx.
Vous devez prendre en compte la déformation de la balle. Cela affectera le temps ou les cadres où la balle est collée au mur, ainsi la force de friction exercera pendant une plus longue période affectant la vitesse de rotation et de sortie. Cette déformation dépend de la façon dont vous souhaitez que votre modèle soit.
la source