Eu acho que você pode estar tentando encaixar uma chave quadrada em um buraco redondo aplicando SAT da maneira que está aqui. Obviamente, ele não foi projetado para colisões côncavas-côncavas e, embora eu recomende seu esforço para adaptá-lo para esse fim, há considerações que tornam improvável que isso funcione.
Realismo
Impulso angular e seus efeitos indiretos são o nome do jogo aqui.
A ordem dos pontos de contato é importante para a resolução realista de colisões. No mundo real, um desses pontos sempre vai aparecer antes de outro. E é apenas emulando a ordem de contato e os resultados de cada "subcolisão" representada por isso, que você pode esperar obter um resultado realista na simulação. Essa é uma das razões pelas quais você está dividindo seu côncavo em convexo, em primeiro lugar - ele permite a detecção por partes de qual parte foi atingida primeiro. Obviamente, isso também pode ser emulado de acordo com meu comentário sob o título "Menos realismo".
Seus acessórios convexos combinam-se para dar ao objeto o contorno e o centróide (e, claro, em simulações mais complexas, cada acessório pode afetar a densidade de maneira diferente). A razão pela qual mencionei isso é que, ao resolver colisões de maneira realista, você precisará calcular não apenas o impulso linear, mas também o angular, seguindo cada "sub-colisão" de seus pontos de contato. Não é tão simples quanto o "afastamento" básico que você aplica com o SAT.
Isso muda completamente a natureza do seu problema, porque, como você pode ver, é inútil obter e tentar usar 2 ou mais pontos de contato, porque na verdade é apenas o primeiro que importa. Depois de ter resolvido o primeiro em termos de impulso linear e angular, será necessário recalcular para outras colisões, porque as orientações de cada objeto serão alteradas. Além disso, a detecção de cada contato individual na etapa pode ou não precisar ser realizada dentro da mesma etapa - dependendo do tempo entre os contatos quando o primeiro ponto de contato dos objetos toca, o impulso linear e angular subsequente é aplicado, segundo toques no ponto de contato e assim por diante.
Menos realismo
Naturalmente, supondo que você não esteja nem um pouco interessado em resolver um impulso angular, o melhor que você pode fazer com o SAT se torna essencialmente exatamente o que você faria se você envolvesse esses polígonos como convexos usando algo como o Scan de Graham: Separando-se pela única separação vetor. Em outras palavras, faz pouco sentido tentar resolver três vetores em conjunto, como você demonstrou. É o maior do grupo que conta.
EDITAR em resposta à sua pergunta
O que você precisa fazer se quiser uma abordagem simplista é o seguinte:
Determine a direção correta do deslocamento. Isso é feito com mais facilidade casco convexo cada um e determinação das normais para o eixo de separação.
Agora você precisa determinar a magnitude do deslocamento . Por que não podemos simplesmente usar a magnitude dada pelo SAT? Porque se você pensar bem, as profundidades de interpenetração serão potencialmente maiores para os cascos convexos, do que para os cascos côncavos correspondentes - pense em dois E com os dentes um no outro! Como você fez acima, encontre todos os pontos de contato para uma determinada etapa, mas encontre-os paralelos às normais do eixo, porque essa é a direção correta do deslocamento. Agora determine qual desses vetores de sobreposição paralelos é o mais longo. Desloque por esse, descarte o resto e prossiga para a próxima etapa da física.