Saltando uma bola de uma superfície

Atualmente, estou escrevendo um jogo como o Breakout, e estava pensando em como poderia rebater uma bola adequadamente sobre uma superfície.

Eu segui a maneira ingênua de girar a velocidade em 90 graus, que era:

[vx, vy] -> [-vy, vx]

O que (sem surpresa) não funcionou tão bem. Se eu souber a posição e a veocidade da bola, bem como o ponto em que a bola atingirá (mas, em vez disso, ela ricocheteará), como posso ricocheteá-la nesse ponto?

Restrições:

Eu estou usando matemática inteira (sem FP em qualquer lugar)Todas as minhas superfícies são superfícies planas simples (vertical, horizontal ou em bloco)Eu só quero saltar em um ângulo de 90 grausTodas as colisões são puramente elásticas (isto é fuga - não há necessidade de fricção, etc.)

Não preciso de nenhum código específico de idioma. Se alguém pudesse fornecer uma fórmula matemática pequena sobre como fazer isso corretamente, funcionaria bem para mim.

Obrigado!

questionAnswers(7)

yourAnswerToTheQuestion