He trabajado en un motor de física escrito en C# que hace precisamente esto.
Aquí están mis notas sobre este tema.
Los objetos tienen tanto de traslación y de rotación impulso.
Cuando dos objetos chocan, el total del algoritmo es como sigue:
1> Encontrar el momentum total de ambos objetos. Calcular la traslación y de rotación impulso, la suma vectorial de este es el momentum total del objeto.
2> Dividir el impulso utilizar el habitual impulso de la división de la ecuación que normalmente uso. (Como aquí)
Cada objeto tiene su nuevo ímpetu. El siguiente paso es decidir qué parte de ese impulso es de traslación y de rotación.
3> Imaginar un vector que va desde el punto de colisión para el centro de masa del objeto que fue golpeado. El componente de la entrada de impulso vector que está en paralelo con Una de las formas de la nueva traslación de vector de impulso, el resto del vector representa la rotación de impulso.
Las notas adicionales han vinculado a mostrar más detalles acerca de mi methematical de trabajo, y también una descripción de cómo manejar inelástica de colisiones.
Usted puede encontrar el motor de física de aquí, y una implementación de la colisión de manejo de aquí