Estoy trabajando en un motor de física puramente continuo, y tengo que elegir algoritmos para la detección de colisiones de fase amplia y estrecha. "Puramente continuo" significa que nunca hago pruebas de intersección, sino que quiero encontrar formas de detectar cada colisión antes de que suceda, y poner cada una en la pila de "colisiones planificadas" ordenadas por TOI.Técnicas de Detección de Colisión de Motor de Física Continua
Amplio Fase El único método en fase continua amplio que puedo pensar es que encierra cada cuerpo en un círculo y probar si cada círculo volverá a superponerse otra. Sin embargo, esto parece terriblemente ineficiente y carece de cualquier sacrificio.
No tengo idea de qué análogos continuos pueden existir para los métodos discretos de eliminación de colisiones de hoy en día, como los árboles cuádruples. ¿Cómo puedo evitar las pruebas anómalas inapropiadas e inútiles, como lo hace un motor discreto?
Fase estrecha
he conseguido adaptar el estrecho SAT a una verificación continua más que discreta, pero estoy seguro de que hay otros algoritmos mejores por ahí en los documentos o de los sitios que ustedes podrían haber llegado a través.
¿Qué algoritmos rápidos o precisos sugieres que use y cuáles son las ventajas/desventajas de cada uno?
Nota final:
digo técnicas y no algoritmos porque todavía no hemos decidido cómo voy a almacenar diferentes polígonos que podrían ser cóncavos, convexos, redondos, o incluso tener agujeros. Planeo tomar una decisión sobre esto en función de lo que el algoritmo requiere (por ejemplo, si elijo un algoritmo que descompone un polígono en triángulos o formas convexas, simplemente almacenaré los datos del polígono de esta forma).
'assert (Make_a_list == not_constructive_close)' – dmckee
Si aún no lo conoce, recomendaría [Detección de colisiones en tiempo real] (http://realtimecollisiondetection.net/) como un excelente recurso. – Bart
¿Cómo está implementando su dinámica, y lo hace de forma continua? si su sistema es lineal, entonces debería ser capaz de simplemente resolver el siguiente tiempo de colisión usando la matriz de transición de estado, las condiciones de colisión y un buscador de raíz (como el método de Newton). si su sistema no es lineal, tendrá que resolver la dinámica utilizando un paso a paso de tiempo, a menos que tenga una estructura adicional, en cuyo caso probablemente deba mencionarlo. – vlsd