Eu implementei um mecanismo de física baseado nos conceitos do texto clássico Advanced Character Physics, de Thomas Jakobsen. A fricção é discutida apenas muito brevemente no artigo e o próprio Jakobsen observa como "outros e melhores modelos de fricção que isso podem e devem ser implementados".
Geralmente, como se poderia implementar um modelo de atrito crível sobre os conceitos do artigo mencionado? E como o atrito encontrado pode ser traduzido em rotação em um círculo?
Não quero que essa pergunta seja sobre minha implementação específica, mas sobre como combinar as idéias de Jakobsens com um ótimo sistema de atrito em geral. Mas aqui está uma demonstração ao vivo mostrando o estado atual do meu mecanismo que não lida com atrito de forma alguma: http://jsfiddle.net/Z7ECB/embedded/result/
Abaixo está uma figura mostrando e um exemplo de como a detecção de colisão poderia funcionar em um mecanismo baseado no artigo. Na integração Verlet, a posição atual e a anterior são sempre armazenadas. Com base nisso, uma nova posição é calculada. Em cada quadro, calculo a distância entre os círculos e as linhas. Se essa distância for menor que o raio de um círculo, ocorreu uma colisão e o círculo é projetado perpendicularmente à linha ofensiva, de acordo com o tamanho da sobreposição (deslocamento na imagem).
A velocidade está implícita devido à integração do Verlet, portanto, mudar de posição também altera a velocidade. O que eu preciso saber é determinar de alguma forma a quantidade de atrito no círculo e movê-lo para trás paralelamente à linha, a fim de reduzir sua velocidade.