Cela fait un petit moment que je cherche à comprendre comment implémenter Runge-Kutta pour le système d'équations de Newton.
Voici le système d'équations :
dx(t)/dt = v(t)
dR(t)/dt = w(t)*R(t)
dP(t)/dt = F(t)
dL(t)/dt = T(t)
x(t) : position du centre de masse
R(t) : matrice d'orientation
P(t) : moment linéaire
L(t) : moment angulaire
v(t) : vitesse du centre de masse
w(t) : vitesse angulaire
F(t) : somme des forces appliquées sur le corps
T(t) : somme des couples générés par les forces appliquées
Les grandeurs auxilliaires se calculent comme suit:
v(t) = P(t)/M
I(t) = R(t) Ib R(t)^T
w(t) = I(t)^-1 L(t)
I(t) = tenseur d'inertie dans le repère fixe choisi
Ib = tenseur d'inertie dans le repère local
R(t)^T = transposée de la matrice d'orientation
I(t)^-1 = inverse du tenseur d'inertie exprimé dans le repère fixe
En fait , je reprends ces équations du papier de Baraff "An introduction to physically based modeling" disponible à l'adresse suivante :
[url]http://www.cs.cmu.edu/~baraff/sigcourse/notesd1.pdf[/url]
J'ai écrit une ébauche de moteur physique utilisant la méthode d'Euler(pour sa trop grande simplicité) : il s'avère que je n'obtiens pas de résultats satisfaisants lorsque je simule freinage et virage simultanément pour un mobile...
J'aimerais donc utiliser une méthode plus précise d'où celle de Runge-Kutta d'ordre 4. Le seul problème vient du fait que dans celle-ci , on doit disposer d'une fonction dépendant explicitement du temps et des variables que l'on veut intégrer.Il s'avère que dans l'équation donnée , je ne dispose pas d'une fonction me permettant de calculer le membre de droite en fonction du temps et des variables x(t) , R(t) , P(t) et L(t) , puisque je ne connais pas à priori ce qu'elles valent aux instants t = t0 + dt/2 et t = t0 + dt.
Les seules données dont je dispose sont les forces et couples générés à l'instant t0( que je peux supposer constantes entre t0 et t0 + dt ou faire varier linéairement , exponentiellement , etc ). Il n'empêche que je ne peux calculer le membre de droite en un instant autre que l'instant t0.
Quelqu'un pourrait-il me dire comment appliquer Runge-Kutta dans ce cas-ci?
Merci pour vos réponses.