|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2003
Città: Lucca
Messaggi: 379
|
Codice per simulare un moto parabolico
Ciao!
Non so quanti di voi si ricordano il gioco del gorilla Sto parlando di quel giochino (che per quanto ricordo era fatto in qbasic) in cui vi erano due gorilla messi ad una certa distanza, a turno ognuno lanciava contro l'altro una bana nel tentativo di colpire l'avversario. Si potevano impostare i valori (velocità della banana e angolo di inclinazione rispetto alla verticale) Sto facendo un'applicazione simile (al posto della banane ho una pallina :-)), ed avrei bisogno qualche suggerimento su come far lanciare un oggetto. Di sicuro mi serve qualche formula fisica oppure uno pseudocodice che suggerisca di come simulare un corpo lanciato verso l'alto
__________________
God rides DUCATI! |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2002
Città: Singularity
Messaggi: 894
|
Re: Codice per simulare un moto parabolico
Quote:
x=x0 y=y0 Vy = Vy0 x = x + Vx0*dt Vy = Vy - g*dt y = y + Vy*dt x0, y0 è il punto di partenza dell'oggetto, Vx0, Vy0 la velocità iniziale rispettivamente sull'asse x e sull'asse y. g è l'accelerazione di gravità e dt è l'intervallo di tempo fra un fotogramma e l'altro, quindi deve essere molto piccolo (0.01 dovrebbe andare). Se prendi dt troppo grande la simulazione non è più corretta. Il seno di uguale (=) significa ovviamente assegnamento. Per aggiungere anche il vento (come il gorilla.exe ![]() x=x0 y=y0 Vx = Vx0 Vy = Vy0 Vx = Vx + Wx*dt x = x + Vx*dt Vy = Vy - g*dt + Wy*dt y = y + Vy*dt Le convenzioni per il segno della forza del vento (W) sono le stesse della velocità, cioè se hanno lo stesso segno il vento spinge l'oggetto. g e Wy nella terza equazione li puoi raccogliere per risparmiare calcoli, visto che sono fissi. E se proprio vuoi esagerare, puoi inserire anche l'attrito dell'aria (h), dipendente dalla velocità: Vx = Vx + Wx*dt - h*Vx*dt x = x + Vx*dt Vy = Vy - g*dt + Wy*dt - h*Vy*dt y = y + Vy*dt h deve essere abbastanza basso, altrimenti l'oggetto finisce subito a terra ![]() Sono andato a memoria, ma le equazioni dovrebbero essere quelle ![]()
__________________
echo 'main(k){float r,i,j,x,y=-15;while(puts(""),y++<16)for(x=-39;x++<40;putchar(" .:-;!/>"[k&7])) for(k=0,r=x/20,i=y/8;j=r*r-i*i+.1, i=2*r*i+.6,j*j+i*i<11&&k++<111;r=j);}'&>jul.c;gcc -o jul jul.c;./jul |Only Connect| "To understand is to perceive patterns" Isaiah Berlin "People often speak of their faith, but act according to their instincts." Nietzsche - Bayesian Empirimancer - wizardry |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:10.