Encontrar el punto de colisión


8

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 ...

Respuestas:


6

Las palabras clave que está buscando son "puntos de soporte" y "múltiples" .

Erin Catto ha escrito un excelente motor de física 2D. Él presenta regularmente en GDC. Debería poder encontrar algunas de sus diapositivas donde explica las múltiples colisiones. La primera versión de su motor de física solo admitía formas de caja para calcular simplemente los puntos de soporte. Que es donde el motor obtuvo su nombre Box2D .

La respuesta es demasiado compleja para describirla completamente aquí, pero la descripción general es que debe elegir un total de 2 puntos de las dos formas. Luego aplique la fuerza de restitución por igual a cada uno. También tendrá que lidiar con un caso de esquina donde es mejor usar solo un punto de soporte.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.