Ich habe mir gedacht, dass jemand diese Frage wahrscheinlich schon vorher gestellt hat, aber ich konnte keine Antwort finden.
Ich schreibe eine Physik-Bibliothek für meine Spiele-Engine (2d, derzeit in ActionScript3, aber leicht übersetzbar in C-basierte Sprachen).
Ich habe Probleme, eine gute Formel zu finden, um die Trägheit meiner Spielobjekte zu berechnen.
Die Sache ist, es gibt viele bewährte Formeln, um die Trägheit um einen Schwerpunkt eines konvexen Polygons zu berechnen, aber meine Struktur ist etwas anders: Ich habe Spielobjekte mit einem eigenen lokalen Raum. Sie können diesem lokalen Bereich konvexe Formen wie Kreise und konvexe Polygone hinzufügen, um komplexe Objekte zu bilden. Die Formen selbst haben wiederum ihren eigenen lokalen Raum. Es gibt also drei Schichten: Welt, Objekt & amp; Formraum.
Ich hätte keine Probleme, die Trägheit jedes einzelnen Polygons in der Form mit den Formeln zu berechnen, die im Wikipedia-Artikel Trägheitsmomente
oder die, die in einer tollen Kollisionserkennung & amp; Antwortartikel .
Aber ich frage mich, wie ich das mit meiner Objektstruktur in Verbindung bringe, füge ich einfach alle Trägheiten der Formen des Objekts hinzu? So benutzt ein anderer Autor die Trägheit triangulierter Polygone und addiert alle Trägheitsmomente der Dreiecke. Oder ist da mehr dran?
Ich finde dieses ganze Trägheitskonzept ziemlich schwierig zu verstehen, da ich keinen starken Physikhintergrund habe. Wenn also jemand mir eine Antwort liefern könnte, vorzugsweise mit der Logik hinter der Trägheit um einen gegebenen Schwerpunkt, wäre ich sehr dankbar. Ich studiere tatsächlich I.T. - Spielentwicklung an meiner Universität, aber zu meiner großen Frustration ist keiner der Lehrer in ihren Reihen auf dem Gebiet der Physik erfahren.
Laurens, die Physik ist viel einfacher, wenn du im zweidimensionalen Raum bleibst. Im 2D-Raum werden Rotationen durch einen Skalar beschrieben, der Rotationswiderstand (Trägheitsmoment) wird durch einen Skalar beschrieben, und Rotationen sind additiv und kommutativ. Die Dinge werden haarig (viel, viel haariger) im dreidimensionalen Raum.
Wenn Sie zwei Objekte verbinden, hat das kombinierte Objekt seinen eigenen Schwerpunkt. Um das Trägheitsmoment dieses kombinierten Objekts zu berechnen, müssen Sie die Trägheitsmomente der einzelnen Objekte summieren und zusätzlich einen Offset-Ausdruck hinzufügen, der durch Steiner Parallelachsensatz für jedes einzelne Objekt. Dieser Offset-Term ist die Masse des Objekts multipliziert mit dem Quadrat der Entfernung zum zusammengesetzten Massenmittelpunkt.
Der Hauptgrund, warum Sie das Trägheitsmoment kennen müssen, ist, dass Sie die Reaktion auf Drehmomente simulieren können, die auf Ihr Objekt einwirken. Dies ist in der 2D-Physik ziemlich einfach. Das Rotationsverhalten ist analog zu Newtons zweitem Gesetz. Anstelle von F = ma verwendest du T = Iα. (Die Dinge sind im 3D-Raum noch einmal viel haariger.) Sie müssen die externen Kräfte und Drehmomente finden, nach linearer Beschleunigung und Rotationsbeschleunigung auflösen und dann numerisch integrieren.
Ein gutes Anfängerbuch über Spielphysik ist wahrscheinlich in Ordnung. Eine Liste der empfohlenen Texte finden Sie in Frage auf der Gamedev Schwesterseite .
Für lineare Bewegung können Sie sie einfach hinzufügen. Trägheit ist proportional zur Masse. Addieren Sie die Massen Ihrer Objekte und berechnen Sie die Trägheit der Summe, indem Sie ihre individuellen Trägheiten addieren.
Für die Rotation wird es komplizierter, Sie müssen den Schwerpunkt finden.
Lesen Sie Newtons Bewegungsgesetze. Sie müssen sie verstehen, wenn Sie eine Physik-Engine schreiben. Die Gesetze selbst sind sehr kurz, aber sie zu verstehen erfordert mehr Kontext, also google herum.
Sie sollten speziell versuchen, die Konzepte zu verstehen: Masse, Trägheit, Kraft, Beschleunigung, Momentum, Geschwindigkeit, kinetische Energie. Sie sind alle verwandt.