1. The problem statement, all variables and given/known data Im programming physics simulation. ...rigid body collision with ball. The ball is OK, but I have to push and rotate the rigid body. I have the contact point and the velocity(v) that I would add to the bodys current velocity if I wouldnt have to rotate it. So I need to divide that v into push(v_push) and rotate(angular_velocity) parts. 3. The attempt at a solution I see v as a momentum that stores some energy(E_total) Energy_in_v_push= Energy_in_v - Energy_in_generated_angular_velocity So my current solution is: M= |v| * r (torque) I= 1/12 * m * (a^2 + c^2) (moment of inertia. the body is an a*c rectangle. m is the weight) (... M and I are OK) omega= M / I E_total= 1/2 * m * |v|^2 E_spin= 1/2 * I * omega^2 E_push= E_total - E_spin |v_push|= sqrt( 2 * E_push / m) generated_angular_velocity= omega * FROM_RADIANS (I have to convert it to degrees) Well, this works perfectly except I have to multiply generated_angular_velocity with m, otherways it turns much too slowly. Whats the problem then? I guess that omega= M/I is angular acceleration not velocity or something. Is this whole approach wrong? Thanks!