Bonjour, n'ayant pas suivi de longues études et étant assez mauvais je vous demande de l'aide!
Cela fait plus d'une semaine que je planche dessus sans succes.
Imaginons un jeux d'arcade avec un vaisseau se deplaçant en 2D dans un "espace" fluide...
Le mobil a un comportement comparable a un overcraft sur une table ( cousin d'air a propulsion dirigeable )
Il me faut trouver une equation horaire valable pour ensuite régler l'interpolation et l'extrapolation pour créer l'illusion du temps réel et amoindrire la latence...
En s'inspirant de la chute d'un solide dans un fluide avec m=1(masse) et k=1(frottement)
et g=a (la gravité est considéré comme une sorte de moteur pour le mobile)
Pour simplifier et economiser du meme coup en temps de calcul (ce qui est tres important) ,
On obtient l'equation de la vitesse sous la forme: V(t) = a+(V0 - a)*exp(-t) ou V(t) = a*(1 - exp(-t))+v*exp(-t)
Il n'y a aucun problem pour integrer et trouver l'equation horaire MAIS le comportement de l'objet n'est pas désirer car il a une adhérence total au milieu.
Mon problem est donc d'introduire une sorte d'effet d'inertie ou d'acceleration d'entrainement ou autre vitesse relative tout en gardant la formule de la vitesse ci dessus.
L'effet désiré n'est pas dur a realiser avec une sorte d'échantillonage mais je ne trouve aucun moyen de faire une prédicition valable...
Par exemple:
une addition vectorielle echantilloné ( Vecteur precedent+ vecteur poussé = Vecteur actuel )
note: attention le cercle trigonometrique n'est pas commun, l'origine est en haut a gauche en informatique et le zero du cercle est le point le plus haut.
la simplification de la formul et les unités permettent aussi de confondre vitesse, acceleration, et pixel(px) pour alleger les transformation a l'affichage.
Vx := 0 ; portion de la vitesse sur la l'axe X
Vy := 0 ; portion de la vitesse sur la l'axe Y
Va := 0 ; orientation de l'objet
a := 200 ; px/s² (acceleration)
v := 0.0 ; px/s (vitesse précedente)
w := 3.14 ; rad/s (vitesse de pivotement)
dt := 30/1000 ; s (interval de temps)
loop
{
; modification de l'orientation du mobil
Va += GetKeyState(Left) ? -w*dt : GetKeyState(Right) ? w*dt : 0
; force du moteur du mobil
F := GetKeyState(Up) ? a : GetKeyState(Down) ? -a/2 : 0
; calcul vitesse avec orientation ou non, et injection de force ou non
Fx := F*sin(Va)
Fy := F*-cos(Va)
Vx:=(Fx+(Vx-Fx)*exp(-dt))
Vy:=(Fy+(Vy-Fy)*exp(-dt))
; position du mobil
X := X+Vx*dt
Y := Y+Vy*dt
}
mon problem est donc l'equation horaire quand le mobil a une vitesse et une rotation tout en ayant une inertie.
-----