Como determinar qual lado de um retângulo colide com um círculo

Antes de você apontar que há outras respostas para essa pergunta, eu olhei se não todas, a maioria das outras respostas a esta pergunta ou uma pergunta semelhante e eu não encontrei a solução que eu preciso.

Basicamente, tudo que eu quero ser capaz de fazer é quando o círculo / bola colide com um retângulo, eu quero determinar de que lado do retângulo esta colisão ocorreu. Eu quero descobrir isso para que eu possa impor uma física um pouco mais realista, por exemplo se a bola atingir o topo do retângulo, inverta-se apenas a velocidade Y ... em vez de ambas.

Eu tentei comparar as posições X e Y da bola e do retângulo e até mesmo a localização de ambas as caixas delimitadoras ... testando mesmo se a parte inferior da caixa da bola tivesse cruzado com o topo dos retângulos ... usando 'se a bola .boundingBox.Bottom> = rectangle.boundingBox.Top '.

Anexei uma imagem a esta para mostrar o que eu estou tentando alcançar ... apenas no caso de ser um pouco confuso, pois não é detalhado ... o vermelho que se parece com v é o caminho se a bola vier de um lado , eu quero que o movimento no impacto se desloque no caminho oposto, mas isso depende do lado do retângulo em relação a qual componente da velocidade da bola eu terei que mudar ...

FYI eu também olhei para normalização de vetores ... eu não usei isso antes, então me perdoe se isso poderia ser resolvido usando isso ...

Obrigado v.muito pela leitura

EDIT como eu estou com pressa, eu usei uma imagem diferente em vez disso ... isso ainda mostra o comportamento que estou tentando alcançar, como a física mostrada no diagrama é como eu quero que a bola se comporte quando colide com o outro lados ... LINK PARA IMAGENS:http://codeincomplete.com/posts/2011/6/12/collision_detection_in_breakout/bounce2.v283.png

questionAnswers(1)

yourAnswerToTheQuestion