J'ai implémenté un moteur physique basé sur les concepts du texte classique Advanced Character Physics de Thomas Jakobsen. La friction n'est discutée que très brièvement dans l'article et Jakobsen lui-même note comment "d'autres modèles de friction meilleurs que ceux-ci pourraient et devraient être mis en œuvre".
En général, comment pourrait-on mettre en œuvre un modèle de friction crédible en plus des concepts de l'article mentionné? Et comment traduire le frottement trouvé en rotation sur un cercle?
Je ne veux pas que cette question concerne ma mise en œuvre spécifique mais comment combiner les idées de Jakobsens avec un grand système de friction plus généralement. Mais voici une démo en direct montrant l'état actuel de mon moteur qui ne gère en aucune façon les frottements: http://jsfiddle.net/Z7ECB/embedded/result/
Ci-dessous, une image montrant et un exemple sur la façon dont la détection de collision pourrait fonctionner dans un moteur basé sur le document. Dans l'intégration Verlet, la position actuelle et précédente est toujours stockée. Sur cette base, une nouvelle position est calculée. Dans chaque image, je calcule la distance entre les cercles et les lignes. Si cette distance est inférieure à un rayon de cercles, une collision s'est produite et le cercle est projeté perpendiculairement à la ligne incriminée en fonction de la taille du chevauchement (décalage sur l'image).
La vitesse est implicite en raison de l'intégration de Verlet, donc le changement de position change également la vitesse. Ce que je dois savoir, c'est déterminer en quelque sorte la quantité de frottement sur le cercle et le déplacer vers l'arrière parallèlement à la ligne afin de réduire sa vitesse.