Hello,
Ca marche aussi chez moi sous xp
Par contre, le ciel et la mer bougent un tout petit peu trop vite, ça rend malade
Si tu veux tenir compte des frottements dus à la vitesse (force de frottement du type f = k . v² tangente à la trajectoire) , j'avais posté ça il y a quelques temps :
Code:
;trajectoires de projectiles
;auteur Huitbit
;pb v4.10
;*********************************
#largeur_ecran=1024
#hauteur_ecran=400
#g=9.8 ;intensité du champ de pesanteur
;-données courbe avec frottements
#beta=0.0008; coefficient de frottements de l'air divisé par la masse du missile
x.f=5;abscisse initiale
y.f=398;ordonnée initiale
v0.f=100;intensité de la vitesse initiale
angle.f=45*#PI/180;angle initial
;vitesse
vx.f=v0*Cos(angle)
vy.f=-v0*Sin(angle)
v.f=Sqr(vx*vx+vy*vy)
;accélération
ax.f=-#beta*v*vx
ay.f=#g-#beta*v*vy
;-données courbe sans frottements
x1.f=x
y1.f=y
vx1.f=v0*Cos(angle)
vy1.f=-v0*Sin(angle)
ay1.f=#g
;-pas du calcul
dt.f=0.1
dt1.f=dt
InitSprite()
InitKeyboard()
OpenWindow(0,0,0,#largeur_ecran,#hauteur_ecran,"Projectile",#PB_Window_ScreenCentered|#PB_Window_SystemMenu )
OpenWindowedScreen(WindowID(0),0,0,#largeur_ecran,#hauteur_ecran,0,0,0)
Repeat
Repeat
Event = WindowEvent()
If Event = #PB_Event_CloseWindow
End
EndIf
Until Event = 0
;-cas avec frottements (courbe rouge)
v=Sqr(vx*vx+vy*vy)
ax=-#beta*v*vx
ay=#g-#beta*v*vy
vx=vx+ax*dt
vy=vy+ay*dt
x=x+vx*dt
y=y+vy*dt
;-cas sans frottements (courbe verte)
vy1=vy1+ay1*dt1
x1=x1+vx1*dt1
y1=y1+vy1*dt1
StartDrawing(ScreenOutput())
If x>2 And x<#largeur_ecran-2 And y>2 And y<#hauteur_ecran-2
Plot(x,y,RGB(255,0,0))
Else
dt=0
EndIf
If x1>2 And x1<#largeur_ecran-2 And y1>2 And y1<#hauteur_ecran-2
Plot(x1,y1,RGB(0,255,0))
Else
dt1=0
EndIf
StopDrawing()
Delay(1)
FlipBuffers()
ForEver
Hasta la vista !