Seguindo a minha pergunta anterior : Eu tenho a bola quicando de maneira bastante realista nas superfícies que bate. Agora eu gostaria de fazer girar a partir do atrito do golpe .
Mostrar isso é bastante simples: eu giro a bola pela sua velocidade angular a cada tick e aplico a mesma rotação quando é renderizada.
Quando uma bola bate em uma parede, eu sei que a velocidade de rotação é afetada por ...
- velocidade inicial da bola ao atingir a superfície
- os coeficientes de atrito da bola e da superfície (constantes físicas)
- o ângulo de incidência (o ângulo entre o vetor de velocidade de entrada da bola e a superfície normal).
O ângulo de incidência é aproximado pelo produto escalar dos vetores de velocidade de impacto e velocidade de saída da bola. (1 significa giro alto, -1 significa que não giro e todo o resto relativamente)
Multiplicando todos os itens acima e certificando-se de que foram então transformados no intervalo de 0 a 1 e multiplicados pela velocidade máxima de rotação, a bola pareceu responder na velocidade de rotação conforme o esperado. Exceto por uma coisa: sempre rodava no sentido horário (devido a valores positivos).
Esse é um bom método? Você consegue pensar em uma maneira mais simples?
Se esse método parece bom, o que estou perdendo? Como sei quando a bola deve girar no sentido anti-horário?