Aufgabe: Schiefer Wurf
-
Ich will einen ballastischen Flug eines Körpers simulieren:
Eigabe:
Geschwindigkeit
WinkelDer Ball soll mit der eigegebenen Geschwindigkeit und dem eingegebenen Winkel "abgeschossen" werden und dann im Bogen mit Hilfe der "Schwerkraft"(9,81m/s²) wieder nach unten fliegen.
Formeln
// Die Geschwinidkeit v lässt sich in vx und vy zerlegen: vx=v*cos(w/360*2*M_PI); vy=v*sin(w/360*2*M_PI); // Im Zeitintervall dt=0,01s bewegt sich der Körper um die Strecke horizontal und vertikal: dy=vx*dt; dx=vy*dt;naja vielleicht könnt ihr ja was draus machen

Danke,
neo
-
neobanz schrieb:
Ich will einen ballastischen Flug eines Körpers simulieren:
Um ganz ehrlich zu sein, ich nicht.
Und was ist dein Problem? Die Formel? Die Umsetzung?
-
neobanz schrieb:
naja vielleicht könnt ihr ja was draus machen

tse tse, uns was vor die Füße werfen, damit wir deine arbeit machen?
Musst schon dein Problem präzisieren...
-
Fertig!!!
PS: aber mit Excel, ätsch
-
ich will euch nichts vor die Füße werfen. Wir haben in der Schule den Schiefen Wurf besprochen und ich wollte ihn in c++ umsetzen
.
nur bei mir fliegt der ball nur senkrecht hoch.void __fastcall TForm1::Timer1Timer(TObject *Sender) { float vy,vx,dt,g,dy,dx,x,y,w,v; v=StrToFloat(Edit1->Text); w=StrToFloat(Edit2->Text); dt=0.01; g=9.81; x=Shape1->Left; y=Shape1->Top; vx=v*cos(w/360*2*M_PI); vy=v*sin(w/360*2*M_PI); vy=vy-g*dt; dx=vx*dt; dy=vy*dt; x=x+dx; y=y-dy; Shape1->Left=x; Shape1->Top=y; }ich hab schon so viel unterschiedliche möglichkeiten ausprobiert...

-
So klappt das net!

Nehm mal den debugger und schau Dir in Timerproc mal an:
vx
vy!!!
vy muss von positiven Werten bis Null abnehmen und dann immer negativer werden - Fallbeschleunigung!
vx sollte konstant bleiben!
PS: Du rechnest immer nur mit dt, Du musst aber die Zeit 'hochzaehlen' oder vy 'nachziehen'
-
sry, ich bin grad sehr durch den wind
. ich mach an dem ding schon so lange rum...und bin glaub grad nicht mehr so aufnahmefähig.naja wenigstens geht der ball jetzt in dem angegebenen winkel nach rechts
float vy,vx,dt,g,dy,dx,x,y,w,v; v=StrToFloat(Edit1->Text); w=StrToFloat(Edit2->Text); dt=0.01; g=9.81; x=Shape1->Left; y=Shape1->Top; vx=v*cos(w/360*2*M_PI); vy=v*sin(w/360*2*M_PI); vy=vy-g*dt; dx=vx*dt; dy=vy*dt; x=x+vx; y=y-vy; Shape1->Left=x; Shape1->Top=y;
-
Du musst rechnen:
vy=vy-g*dt*ANZAHL_SCHRITTE
!!!