Physik-Experiement



  • Hallo Community,
    Ich arbeite aktuell viel mit C++ und SFML, kenne zwar noch nicht alles im Detail, aber ich arbeite mich ja auch noch ein 😃

    Jetzt wollte ich ein kleines Physik-Programm schreiben! Undzwar:
    -Man macht einen Klick(links) im Fenster
    -es spawnt an der Stelle eine Kugel
    -sie fällt herunter
    -...

    Ich brauche die physikalische Formel für den Fall einer Kugel, mit Kollision kenne ich mich noch aus, ich weiß aber nicht ganz genau, was ich noch brauche.

    Schon mal Danke im voraus. Hoffe ich habe keinen Denkfehler 😃



  • Naja, vllt sollen sie auch nur herunterfallen, überlege noch ...


  • Mod

    Was meinst du mit der Formel für den Fall einer Kugel? Je nachdem, wie du dein Programm gestaltest, kann die Angabe in sehr unterschiedlichen Formen Vorteile oder Nachteile haben.

    In Newtonscher Physik gilt für einen punktförmigen Körper (und für das Massezentrum eines Körpers):
    F=ma\vec F = m \vec a
    Mit homogener Gravitation:
    g=ma\vec g = m \vec a
    Mit homogener Gravitation mit nur einer Komponente (o.B.d.A. nenne ich diese die z-Richtung):
    g_z=ma_zg\_z = m a\_z

    Das ist der Ausgangspunkt. Und bereits eine der Formen, mit der viele Programme arbeiten können. Denn a_z=v˙_z=z¨a\_z = \dot v\_z = \ddot z. Du kannst also den Fall simulieren, indem du die Zeit in kleine Stücke zerteilst und in jedem Zeitschritt die Geschwindigkeit entsprechend der obigen Formel änderst und den Ort entsprechend der Geschwindigkeit änderst. Je nach Anspruch kann man das mehr oder weniger elegant machen. Die allernaivste Methode, die ich gerade beschrieben habe, hat leider kleine Probleme mit der Energieerhaltung. Für echte Wissenschaft muss man daher höhere Ordnungen berücksichtigen. Für ein einfaches Demoprogramm ist das aber gut genug. Daher gehe ich nicht näher auf die fortgeschrittenen Methoden ein, es sei denn, es besteht echter Bedarf.

    Wir können natürlich auch analytisch den Aufenthaltsort der Kugel zu jeder Zeit berechnen, indem wir die obige Gleichung eben nicht numerisch, sondern formell integrieren. z¨=konstante\ddot z = \text{konstante} ist so einfach, dass ich mir mal die Herleitung spare:
    z(t)=t2g2m+z(t=0)+tvz(t=0)z(t)= \frac{t^2 g} {2m}+z(t=0)+t v_z(t=0)
    Das kannst du auch in dein Programm einbauen, um zu berechnen, wo die Kugel zu einer bestimmten Zeit tt ist.

    Nach ähnlichem Muster kann man das System noch Verfeinern. Beispielsweise mit Luftwiederstand als linear von der Geschwindigkeit abhängiger Reibung erhalt man als Ausgangspunkt:
    g_zkv_z=mazg\_z - k v\_z = m a_z
    Und macht dann die gleichen Schritte.

    Stöße sind ein bisschen komplizierter. Ein naiver Ansatz in einer Simulation ist wieder sehr einfach (z.B. einfach Geschwindigkeit umdrehen, eventuell mit einem Vorfaktor um Inelastizität zu simulieren), aber kann kompliziert werden (in Ecken), wenn es wirklich physikalisch absolut korrekt sein soll. Und das Ausrechnen einer Formel für die Trajektorie würde den Rahmen dieses Forums sprengen, das überlasse ich dem interessierten Leser zur Übung (entweder im Rechnen oder im Googeln).



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum Mathematik und Physik verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich glaube ich lege das Projekt erstmal nach hinten, merke, dass das nicht so einfach ist 😃
    Arbeiten nun an etwas anderem, vllt folgt ja noch ein Thread 🙂


Log in to reply