   Simple Collision with Ground
  I am trying to make just a very basic hard-coded demo with a golf-ball that bounces on the ground.Since I am using only one object (the ground never moves) I do not take the object mass into account (or consider that it is just 1).  I also hard-coded the restitution coefficient to 0.2, which I wanted to give me a little bounce.According to this book, it should be something like this:CVector3 vNormal;_ctTerrain.GetNormalAt( vNormal, vPos.x, vPos.z );FXREAL fSepVel = m_vVel.Len();FXREAL fNewSepVel = (fSepVel * static_cast<FXREAL>(0.2));FXREAL fImpulse = fNewSepVel;CVector3 vImpulse = vNormal * fImpulse;m_vVel = m_vVel + vImpulse;I get the normal, take the impulse in that direction, and add it to the existing velocity of the ball.This really does not make sense though.  If my ball is falling straight down at -100 and the normal is pointing straight up (a table for example), a perfectly elastic collision would yield this:fNewSepVel = 100 * 1 = 100; // 100 = velocity of ball.CVector3 vImpulse = CVector3( 0, 100, 0 ); // Velocity of ball * normal.m_vVel = m_vVel + vImpulse = CVector3( 0, 0, 0 ); // Add them??This does not seem elastic at all to me!What is the correct way to resolve this collision?   
  the actual response should be something likev += (-(1 + cor) * (v . n)) * nit's (1 + coefficient of restitution) :)and the impulse is proportional to the velocity dot product against the normal of collision.   ;  Thank you; that produces the logical result.  I wonder why my book gives the formula I posted above.  Maybe I need to re-read the whole chapter (last time I read it was over a year ago) to see if the formula it gives is actually meant to be used for this type of contact resolution or if it has a different context.;  cool, have fun!   