Creo que puede estar tratando de encajar una llave cuadrada en un agujero redondo aplicando SAT de la forma en que está, aquí. Obviamente, no está diseñado para colisiones cóncavo-cóncavo, y aunque elogio su esfuerzo por adaptarlo para ese propósito, hay consideraciones que hacen que esto no funcione.
Realismo
El impulso angular y sus efectos secundarios son el nombre del juego aquí.
El orden de los puntos de contacto es importante para una resolución de colisión realista. En el mundo real, uno de esos puntos siempre va a golpear antes que otro. Y es solo al emular ese orden de contacto y los resultados de cada "subcolisión" representada por eso, que puede esperar obtener un resultado realista en la simulación. Esta es una de las razones por las que está rompiendo su cóncavo en convexo, en primer lugar: permite la detección por partes de qué parte golpeó primero. Por supuesto, esto también se puede emular según mi comentario bajo el encabezado "Menos realismo".
Sus dispositivos convexos se combinan para dar al objeto su contorno y su centroide (y, por supuesto, en simulaciones más complejas, cada dispositivo también puede afectar la densidad de manera diferente). La razón por la que menciono esto es que al resolver colisiones de manera realista, tendrá que calcular no solo el impulso lineal sino también angular, después de cada "subcolisión" de sus puntos de contacto. No es tan simple como la "separación" básica que aplica con SAT.
Esto cambia completamente la naturaleza de su problema, porque como puede ver, no tiene sentido obtener e intentar usar 2 o más puntos de contacto, porque realmente es solo el primero lo que importa. Una vez que haya resuelto el primero en términos de impulso lineal y angular, deberá volver a calcular para colisiones adicionales, ya que las orientaciones de cada objeto habrán cambiado. Además de eso, la detección de cada contacto individual en el paso puede o no ser necesario dentro de ese mismo paso, dependiendo de la sincronización entre contactos a medida que toca el primer punto de contacto de los objetos, se aplica el impulso lineal y angular posterior, segundo toca el punto de contacto, y así sucesivamente.
Menos realismo
Por supuesto, suponiendo que no esté interesado en resolver el impulso angular, lo mejor que puede hacer con SAT se convierte esencialmente en lo que haría si envolviera estos polígonos como convexos usando algo como Graham's Scan: separándose por la separación individual vector. En otras palabras, tiene poco sentido tratar de resolver tres vectores en tándem, como has demostrado. Es el más grande del grupo que cuenta.
EDITAR en respuesta a tu pregunta
Lo que debe hacer si desea un enfoque simplista es el siguiente:
Determine la dirección correcta de desplazamiento. Esto se hace más fácilmente haciendo un corte convexo de cada uno y determinando las normales al eje de separación.
Ahora necesita determinar la magnitud del desplazamiento . ¿Por qué no podemos usar la magnitud dada por SAT? Porque si lo piensas bien, las profundidades de interpenetración serán potencialmente mayores para los cascos convexos, de lo que serán para sus cascos cóncavos combinados, ¡piensa en dos E con sus dientes entre sí! Como ha hecho anteriormente, encuentre todos los puntos de contacto para un paso dado, pero encuéntrelos paralelos a las normales del eje, porque esta es la dirección correcta de desplazamiento. Ahora determine cuál de estos vectores de superposición paralelos es más largo. Desplácese por ese, descarte el resto y continúe con el siguiente paso de física.