   Simple(?) collision response question
  if I have a 3d normal plane e.g (0.5,0.5,0) and a 3d vector representing movement of an object e.g. (-10,0,0) and I assume that the object just bounces off with the same speed as before, how do I calculate the new vector (which is intuitively in this case (0,10,0))?    Dave. 
  Google provides:http://www.experts-exchange.com/Programming/Game_Development/AI_Physics/Q_20658459.htmlEssentially, project the incident vector onto the (normalized) normal of the plane.  Subtract twice this projection from the original vector. ;  in shortNewV = V - (1.0f + Bounce) * ((V * N) * N)Bounce is between 0.0f and 1.0f. 1.0f for a very bouncy ball, 0.0f for a ball with no elasticity. N, the normal of the plane, has to be normalised. (0.5, 0.5, 0) is not normalised=> N.Magnitude() = sqrt(N.x*N.x + N.y*N.y + N.z*N.z) = sqrt(0.5f*0.5f + 0.5f*0.5f + 0.0f*0.0f) = sqrt(0.25f + 0.25f) = sqrt(0.5f) = 0.707f;the magnitude of a vector, if normalised, is 1.0f, so N is not normalised, and it will screw up the calculations (the ball won''t bounce as high as expected in that case).to normalise a vector, you do  bool Vector::Normalise(){    float mag = sqrt(x*x + y*y + z*z);    if (mag < 0.000001f)    {   Assert("Vector with no lenth can''t be normalised.");   return false;    }    float invmag = 1.0f / mag;  x *= invmag;    y *= invmag;    z *= invmag;    return true;};  Nice one guys, just reading through the experts-exchange link now.The normalised thing was messing me up, I assumed normalised meant that all three added up to 1, my mistake.Thanks again.   Dave. ;  Hi oliii,If N (the normal) is normalized and V (the vector to be reflected) is also normalized will the result be normalized ?Also, if N is not normalized will the reflection be the same if you normalize the result after the calculation ?Thanks.