Development of a physics engine
Dans un article précédent, nous avons vu que pour déplacer le cycliste, trois forces nous intéressaient : la force de la pente, la force du vent et la force de frottement. Nous avons alors fait des calculs pour estimer les puissances à vaincre afin d'avancer.
Cependant, nous avions des difficultés à intégrer aisément ces calculs au sein d'une technique de rendu graphique pour un jeu vidéo (l'élément HTML Canvas par exemple) afin de faire bouger un cycliste dans un environnement. C'est pourquoi nous avons regardé plutôt la manière dont on peut convervoir un moteur physique avec des langages de programmation. Le livre et le site Nature of code de Daniel Shiffman a été d'une grande aide. Nous avons surtout regardé les parties sur les vecteurs et les forces.
La vidéo ci-dessous montre une version de démonstration d'un moteur physique. On peut changer l'inclinaison de la pente, la vitesse du vent et la qualité de la route. Ces changements sont pris en compte dans les calculs des forces de la pente, du vent et du frottement. La logique des vecteurs permet d'ajouter une série de forces que la force du pédalage doit vaincre pour avancer.
Les variables sont modifiées via des touches du clavier. Voici le détail de la signification du changement de l'objet qui bouge :
- Forme carrée : le cycliste est en roue libre
- Forme ronde : le cycliste pédale
- Forme triangulaire : le cycliste freine
Ces débuts sont plutôt prometteurs. Pour améliorer tout ça, on pourrait :
- intégrer plus de variables dans le calcul des forces
- définir un équivalent de vitesse à laquelle se déplace le cycliste
- intégrer une force ou une variable liée à la santé du cycliste
- intégrer la possibilité de pédaler plus fort ou bien de freiner plus fort
- intégrer un calcul de puissance à partir des données de force et de vitesse
- utiliser l'intégration de Verlet plutôt que la méthode d'Euler pour calculer le changement de position du cycliste