Theoretische Frage zu Physikalischen Simulationen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Theoretische Frage zu Physikalischen Simulationen

    Hallo zusammen.
    Ich bin vor kurzem über den "Ship Sandbox" Simulator () gestoßen und bin seit dem fasziniert davon.
    Einerseits wielange einen eine so kleine Spielwelt beschäftigen kann, andererseits bin ich wissbegierig darauf, wie die Technik im Hintergrund funktioniert.
    Die Schiffe sind mit einer Art Gitternetz umgesetzt worden.
    Ich weiß nicht ob es besser oder schlechter ist, aber meine erste Idee wäre eine Art Minecraft in 2D und sehr viel höherer Auflösung gewesen.
    Ganz viele Klötzchen, 1.000² oder 10.000² oder mehr, was halt die CPU her gibt.
    Bei jedem Tick wird die Position eines jeden Klötzchens mit Hilfe von vereinfachten Physikalischen Gesetzen berechnet.
    Ich denke schon mehrere Tage, Tag und Nacht darüber nach, bei welchem Klötzchen man anfängt.
    Ein Stahl Klotz kann steigen und sinken, genauso wie ein Wasser Klotz steigen und sinken kann.
    Ein Stahl Klotz kann direkten Einfluss auf die Position eines Wasser Klotzes haben und umgekehrt.
    Diese Frage lässt mich einfach nicht mehr los.
    Bei welchen Klotz beginnt man und wo hört man auf?
    Wie kann man die Abhängigkeit der Klötzchen untereinander berücksichtigen?
    @YEE Was Du da beschreibst, ist die Finite-Element-Methode. Da findest Du beliebig viel bei Frau Googkle und im Software-Laden.
    Vereinfacht:
    Ein Klotz wird in r * s * t Klötzchen zerlegt und für jedes Klötzchen einzeln wird die Energie- und die Impulserhaltung formuliert (die Summe aller Energien ist konstant, die Summe aller Impulse ist konstant).
    Wenn nun die Klötzchen in Wechselwirkung treten, passiert nun dies und jenes.
    Mach eine detaillierte Liste, welche Arten von Energie zu berücksichtigen sind:
    Potenzielle, kinetische, thermische, ....
    Reibung wandelt mechanische Energie in thermische Energie um, usw.
    Feddich. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die eigentlich Frage, die du dir stellen solltest lautet nur: Welche physikalischen Gesetze beschreiben die möglichen Effekte und die gesamte Situation approxmativ in einer ausreichenden Ordnung. Falls du hierbei zu einer Antwort gekommen bist, besteht der nächste Schritt erstmal daraus angebrachte Differentialgleichungen zu formulieren. Falls auch das geglückt ist, muss man jetzt den Typ des Differentialgleichungssystems erkennen, um den hierfür besten numerischen Ansatz aus dem Pool von Möglichkeiten (Finite-Elemente, Finite-Differenzen, implizite/explizite Verfahren, spektrale Verfahren mit verschiedensten Basisräumen, etc.pp). Nun könnte man anfangen die Differentialgleichungen numerisch zu formulieren und anschließend zu implementieren - wobei der ganze Prozess durchaus länger andauern kann.

    YEE schrieb:

    Bei jedem Tick wird die Position eines jeden Klötzchens mit Hilfe von vereinfachten Physikalischen Gesetzen berechnet.
    Im Normalfall wird das - soweit ich weißt - so gelöst, als dass immer nur der Teil der Spiele Welt berechnet wird, den der Spieler auch sieht.

    Alles andere wäre Wahnsinn.
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Radinator schrieb:

    so gelöst
    Wohl auch nicht, denn bei einem Schwenk müssten die Zeitscheiben nachgeholt werden, dazu müssten viele Raum-Werte mit ihren (festgehaltenen) Zeitwerten zwischengespeichert werden, was ein gigantischer Overhead wäre.
    Stell Dir vor, Du simulierst die Titanic, Du sitzt an der Bar und trinkst einen Whiskey / Whisky und die Bar neigt sich zur Seite.
    Die Küche hingegen, die Du nicht siehst, neigt sich nicht.
    Frage: Was macht die Kapelle? :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!