Mathematisches Problem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Mathematisches Problem

    Hey miteinander,

    Mathe war nie mein Ding, aber bisher habe ich für meine Projekte meistens das hingekriegt, was ich brauchte. Aber jetzt komm ich nicht weiter. Am besten erkläre ich es mit einem Beispiel:

    Ein Objekt A (sagen wir ein Ball) bewegt sich mit einer bestimmten Geschwindigkeit (nicht konstant wegen friction) in eine Richtung. An anderer Location steht ein Objekt B (ein Spieler), der den Ball zum frühest möglichen Zeitpunkt bzw. durch Zurücklegen der kürzest möglichen Distanz abfangen möchte (collision). Wie berechne ich diesen Punkt auf der x- und y-Achse?

    Ich hatte schon ein paar extravagante Ideen, wie einige zufällige Punkte entlang der Fahrbahn von A (bzw. deren t) berechnen und dazu berechnen, wie lange (t) Objekt B zu diesem Punkt bräuchte und an dem Punkt, wo die beiden Zeitintervalle am nächsten zusammenstehen, ist ein potentiell guter Abfangpunkt. Ansonsten habe ich noch das hier gefunden: matheboard.de/archive/534688/thread.html

    Selbst wenn mir jetzt jemand sagt, dass ich es so machen kann: Woher bekomme ich das t (ganz unten), wenn ich doch die Zeit des Objekts B, das es zu diesem Punkt bräuchte, gar nicht kenne? Und die Position des Objekts B wird hier ja auch nicht miteinbezogen - ich fürchte also, dass mich diese Lösung nicht weiter bringt. Würden mich Vektoren hier weiterbringen, die es ja auch im GM gibt?


    Danke!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Racer90 ()

  • Du nimmst ja Box2D?
    Schau mal in Tafelwerk nach schrägen Würfen.
    Ich brauch die Funktion auch "bald" für einen Turm, der Gegner-Schüsse abwehren soll.
    Wenn ich was habe, dann sag ich dir bescheid.

    Bei mir steht:

    y = Vo * t * sin(Alpha) * (-g/2) * t^2

    Bin mir aber auch nicht mehr so sicher^^ Schule ist schon etwas her xD
  • Also ich denke ich habe was für dich.
    Ich schick dir die Datei demnächst mal.
    Hast du GMS2? (habe die Scripts in gms2 geschrieben)


    Also bei mir geht es:

    Ich gehe davon aus, dass deine Gravitation 10Pixel pro Step ist
    Mach dir einfach mal ein neues Objekt x=0,y=0
    und füge das ein


    GML-Quellcode

    1. Create:
    2. /*
    3. * 10Pixel = 1Meter
    4. * Gravity: 10m/s^2 ---> (100Pixel/s --- 1.6667Pixel/step )
    5. * phy_speed_x = 5 -->5Pixel/step --->300px/s
    6. */
    7. phy_speed_x = 3; //300px/s
    8. phy_speed_y = -1;
    9. show_debug_message(string(
    10. phy_get_y_at_t(-phy_speed*room_speed,3,phy_speed_y/phy_speed_x,100)
    11. ));
    Alles anzeigen


    Funktionen:

    GML-Quellcode

    1. ///phy_horizontally_get_y_at_t(t(s),g(Px/s^2))
    2. var _erg = -(argument1/2) * power(argument0,2);
    3. return -_erg;



    GML-Quellcode

    1. ///phy_get_y_at_t(Vo(Px/s),t(s),alpha(°),g(px/s));
    2. //Vo * t *sin(A) -(g/2) * t^2
    3. var _erg = argument0 * argument1 *sin(argument2) -(argument3/2) *power(argument1,2);
    4. return -_erg



    phy_horizontally_get_y_at_t(t(s),g(Px/s^2)) --> waagerechter Wurf (ohne winkel )
    phy_get_y_at_t(Vo(Px/s),t(s),alpha(°),g(px/s)); -->schräger Wurf (mit Winkel)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von glim888 ()

  • Das Problem ist durch die Draufsicht weitaus komplexer und ist aufgrund der Reibung sogar analytisch nicht lösbar und die Lösung muss mithilfe von Approximation angenähert werden.
    Dazu braucht man auch noch Integral und Vektorrechnung. Da ich ein Mathefreak bin würde ich das Problem sehr gerne lösen, allerdings fehlt mir echt die Zeit (Wo ist bloß meine ganze Zeit hin?).

    Ein paar Denkanstöße:
    Integral von v(t)=v*rt bilden in den Grenzen von 0 bis t, also D(t)=(v*rt-v)/ln(r) welche die Distanz des Balles in abhängigkeit der Zeit angibt
    Dann zwei Geradengleichungen aufstellen und die Vektoren in ein Gleichungssystem überführen.
    Und dann Approximieren.

    Ich hoffe du kannst damit etwas anfangen.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Chris987 ()