21Fermer23
bearbecueLe 27/04/2009 à 19:27
./17> \o/

oue alors la, comme dit plus haut (dans le post que t'as cross grin), le but du processus est de revenir au moment de l'impact, et d'appliquer l'impulse du point qui a reellement impacte.
mais ca ca suppose que tu n'as qu'un point qui impacte a la fois. tu peux avoir plusieurs points qui impactent en meme temps (et effectivement quand t'as un rectangle qui tombe verticalement sur le sol, t'as tous les points de sa surface qui fait contact qui touchent le sol "en meme temps".
les impulses que tu dois appliquer, c'est les impulses generes par LES points de contact. cad que quand t'as trouve le temps de la premiere intersection, il faut que t'accumules les impulses de tous les points qui ont impacte a ce moment la. (par exemple en utilisant un epsilon pour comparer les temps de penetration. tous les points qui entrent en contact au temps 't' plus ou moins 0.001 par exemple, peuvent etre consideres comme contactant au meme moment...)

sinon, pour le cross, oue, comme dit squalyl.
et cf aussi l'exemple dans ./16 :
ApplyForceOnObject(vector where, vector force) 
{ 
  totalForce += force; 
  totalTorque += cross(where - CenterOfMass, force); 
} 


sinon, les vecteurs que t'as dessine la, c'est pas les impulses, c'est les vecteurs du point de contact au centre de gravite. la les impulses seraient verticaux (bon, en fait pour faire ca bien, ils devraient etre paralleles a la vitesse du point au moment de l'impact)


EDIT: cross
(d'ailleurs, pour info au cas ou: la vitesse d'un point de ton tank, tu l'as avec: LinearVelocity + cross(AngularVelocity, point - CenterOfMass))

(re-edit)
mais je vois pas quelle propriété fait que ça donne ce qu'on cherche...

le cross la, en gros ca te donne l'axe de rotation. l'axe perpendiculaire au plan forme par le vecteur de l'impulse et le vecteur du point au centre de gravite. l'impulse s'applique le long de ce plan, et la rotation resultant de l'application de l'impulse se produit autour de l'axe perpendiculaire au plan. (je sais pas si tu visualise le truc?)
apres, la magnitude du vecteur retourne par le cross fait qu'au final ca va tourner plus ou moins vite suivant que l'impulse est applique plus ou moins pres du centre de gravite, et qu'il est plus ou moins fort (il faut plus de force pour induire une certaine vitesse de rotation si tu l'applique pres du centre de gravite que loin.. c'est l'autre propriete que le cross apporte...) d'ailleurs tu peux deduire ca de l'equation d'au dessus pour avoir la vitesse tangentielle a partir de la vitesse angulaire (cross(angularVelocity, point - CenterOfMass))

(bon apres y a surement une demonstration qui va bien pour tout ca, chais pas... ^^)tromb

(edit3: triso)
ca sera ptetre plus simple a visualiser avec un schema:
DpCP