Estoy escribiendo un simulador 2D de cuerpo rígido. Los objetos que se simulan son polígonos convexos. Mi pregunta implica cómo decidir sobre el "punto" de colisión, de modo que cuando aplique una fuerza de respuesta, también pueda calcular el par.
En 2D, el método popular de detección de colisión de fase estrecha parece ser el Teorema del eje de separación. Sin embargo, mientras esto te da el "¿Están colisionando?" además de "¿en cuánto?", NO le da un punto de referencia (que yo sepa) en el cual aplicar la fuerza de respuesta (y así calcular el torque) *.
El otro método (que también me interesa más, porque es lo que se usa en 3D, que sería el siguiente paso lógico) es calcular la diferencia de Minkowski de los dos polígonos y decidir que están colisionando si (0,0) es contenido en el polígono resultante. Pero, ¿cómo usa esto para decidir el punto relativo en el cual aplicar la fuerza de respuesta? Mi hipótesis es que, dado que cada cara de esta diferencia corresponde efectivamente a una cara de uno de los polígonos, la distancia de separación es la distancia más corta desde (0,0) hasta el MD, y usted aplica esto a la cara correspondiente en el polígono .
Como beneficio adicional, ¿cómo se hace esto en 3D?
* Mientras escribo esto, me di cuenta de que, al usar SAT, podía hacer un seguimiento de los puntos que se superponen y aplicar la fuerza en el "promedio" de esos puntos. Pero tendría que decidir cuál de los varios ejes que no se separan para realizar este pequeño truco ...