Aufgabe: Schiefer Wurf



  • Ich will einen ballastischen Flug eines Körpers simulieren:
    Eigabe:
    Geschwindigkeit
    Winkel

    Der 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

    !!!


Anmelden zum Antworten