Pour créer des choses comme la physique dans les jeux, vous avez besoin d'un intégrateur. J'ai vu l'intégration de Verlet mentionnée à plusieurs endroits comme une excellente alternative à l'intégration d'Euler. Par exemple dans le célèbre document de Thomas Jakobsen . Cependant, dans cet article, Glenn Fiedler écrit:
Plutôt que de vous présenter la vaste gamme d'intégrateurs différents qui existent, je vais aller droit au but et aller directement au meilleur. Cet intégrateur s'appelle l'intégrateur Runge Kutta order 4 aka RK4.
Donc, apparemment, il n'y a pas de solution miracle. Quels sont les avantages et les inconvénients des différents intégrateurs? Concernant la simplicité, la vitesse, la précision, la stabilité, etc. Quels intégrateurs conviennent le mieux à quels types de jeux? Quand utiliseriez-vous Verlet, RK4 ou autres? Devriez-vous jamais utiliser Euler?
Réponses:
Avantages et inconvénients des deux méthodes:
Avantages du RK4:
RK4 Contre:
Verlet Pros:
Verlet Inconvénients:
Utiliser l'un sur l'autre dépend du scénario. Si la rigidité et les grandes forces externes et énergies virtuelles sont un problème, alors envisagez d'autres méthodes ayant le mot "implicite" dans leur description / titre.
Notez que certains auteurs / livres utilisent le terme Euler semi-implicite pour un intégrateur Euler explicite réel appelé la méthode Euler symplectique (ou Euler Cromer) dont Verlet est réellement dérivé. Verlet est aussi appelée par certains la "méthode du saute-mouton". Velocity Verlet et la méthode des points médians sont assez similaires car une estimation à un pas de temps de
t + 0.5*dt
est nécessaire pour une étape de type prédicteur-correcteur. Les méthodes IMEX (implicite-explicite) sont également utilisées pour nommer deux approches similaires mais non identiques: séparer les calculs en parties rigides et non rigides et utiliser différents intégrateurs sur celles-ci (explicites pour non-rigides, implicites pour raides) OU résoudre pour la vitesse avec une étape de mise à jour implicite et mettre à jour la position de manière explicite (il s'agit d'une méthode hybride semi-implicite tombant dans la classe de méthodes IMEX car les parties rigides affectent le plus le calcul de l'accélération). Les méthodes implicites sont plus lourdes et nécessitent de résoudre un système d'équations non linéaires simultanées pour la configuration entière. Les méthodes implicites sont utilisées pour les corps déformables et ne sont généralement pas utilisées pour les corps rigides découplés.Comme indiqué dans l'un des commentaires, si vous le pouvez, n'utilisez pas Euler. Utilisez soit la méthode du point médian, l'Euler semi-implicite ou, au même prix, la position-Verlet. Tous ont une précision légèrement supérieure et sensiblement plus de stabilité que l'intégrateur Euler explicite.
Lecture de mini-comparaison recommandée :
http://wiki.vdrift.net/Numerical_Integration
la source
Les implémentations d'Euler ont tendance à être très rapides, mais beaucoup moins stables que les alternatives. Runge Kutta est plus lent qu'Euler, mais beaucoup plus précis et stable.
Je ne suis pas très bien informé sur l'intégration de Verlet, donc je ne sais pas comment cela se compare à Euler et Runge Kutta.
Si vous avez besoin que vos simulations soient plus exactes, voire numériques, Runge Kutta est la meilleure des deux.
Si vous avez besoin d'une physique rapide et peu coûteuse pour un jeu simple, Euler est le meilleur choix.
la source
Tout d'abord, je pense que vous devriez utiliser Euler jusqu'à ce que vous éprouviez un besoin direct d'utiliser un schéma d'intégration plus avancé. Il est rapide et facile à mettre en œuvre.
Si vous rencontrez des problèmes de stabilité tels que des systèmes de ressorts qui ne s'arrêtent jamais ou si votre simulation nécessite un haut niveau de précision, commencez à expérimenter avec les autres.
L'une que je n'ai pas vue mentionnée ci-dessus est la méthode du milieu qui est très facile à mettre en œuvre et ne nécessite qu'une seule étape d'intégration supplémentaire.
la source