wiki:modif_calcul_vitesse

Calcul des vitesses des entités

Les objectifs de cette implémentation

  • Mise en place de calculs des vecteurs de vitesse en 3 dimensions
  • Modification de la formule de calcul des vitesses
  • Formule identique quel que soit l'entité
  • Ajout de contraintes de déplacement selon ceux des entités alentours

Calcul de la vitesse

La version actuelle donne une vision descriptive de l'animation:: double vitesse = _coefV*(m->getDensity()-_density)/(1+_viscosity);

Il est demandé cette fois-ci d'avoir une vision qui permet de donner une animation rapprochée avec des valeurs plus proche de ceux connus actuellement. La nouvelle méthode à intégrer utilise la formule de Stockes :

Vecteurs::
P = (ρG - ρD )*V*g
F = -6*π*η*r*v
F : force de frottement par le fluide environnant sur l'objet (N)
v : vecteur vitesse de l'objet (m/s)
P : vecteur poids (N)
g : accélération provoquée par la gravité (m/s2)

Constantes::
π : constante d'Archimède 3.14 et des poussières

Variables::
ρ : masse volumique (g/cm3) ρG:gabbro ρD:diorite
V : volume (m3)
η : viscosité dynamique du fluide environnant (Pa.s ou N.s/m2)
r : rayon (m)
v : vitesse de l'objet dans l'environnement (m/s)

La relation de Stockes version plus compliquée :
 http://fr.wikipedia.org/wiki/%C3%89coulement_de_Stokes

Le rayon de l'objet est fonction de la trajectoire d'un vecteur vitesse généré à partir d'un endroit localisé qui affecte cet objet.

Pour connaître l'impact d'une force venant de l'environnement, on estime le rayon par un principe de la boîte englobante, par le calcul de la moyenne des scalaires correspondant au nombre de dimensions.

Ainsi pour 3 dimensions : r = ( (| Vrel.z |2 / |Vrel|) . Rz + (| Vrel.x |2 / |Vrel|) . Rx + (| Vrel.y |2 / |Vrel|) . Ry ) / 3
Vrel : vitesse relative entre un objet observé et celui lequel on cherche à connaître son nouveau déplacement.
Rx, Ry, Rz : rayon sur la dimension x, y, z
x, y, z : repère orthonormé

Liste des modifications du code :
- ajout d'un paramètre des dimensions de la boîte englobante dans la classe entité. Les seules dimensions actuelles accessibles sont décrites dans la définition de l'objet visible. Chaque objet peut avoir une forme différente.
- calcul de l'impact de la vitesse après avoir questionné l'environnement
- les objets auront au minimum, deux marks, au-dessus et en-dessous car leur déplacement principal est vertical.

Utilisation

Existant

On a autour d'une entité un certain nombre de balises que ce dernier connaît. Ces balises permettent de recenser les différents entités sur une petite région assez proche pour influencer l'entité.

Proposition de modification

L'entité va demander à chaque balise de calculer les forces des entités environnantes pouvant jouer sur le déplacement de l'objet puis calculer la moyenne pour connaître l'influence général provoqué sur cette entité. Ce vecteur accélération va ensuite influencer directement sur la vitesse de l'objet Comme chaque objet suit la même loi physique, on ramène les méthode de calcul de vitesse et accélération dans la classe supérieure. On divise deux méthodes en une, car la deuxième partie est plus rarement utilisée.

Eviter les rebonds

Si un objet rencontre un autre objet, la force risque de faire rebondir l'objet en déplacement. Comme le déplacement est faible, on va obliger l'objet de perdre sa vitesse.

Attachments