2012-11-28 10 views
9

Ich dachte mir, dass jemand diese Frage wahrscheinlich schon einmal gestellt hat, aber ich konnte keine Antwort finden.Berechnung der Trägheit für einen Multi-Form-Starrkörper

Ich schreibe eine Physik-Bibliothek für meine Game-Engine (2D, derzeit in ActionScript3, aber leicht übersetzbar in C-basierten 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 Trägheit um einen Schwerpunkt eines konvexen Polygons zu berechnen, aber meine Struktur ist etwas anders: Ich habe Spiel-Objekte mit ihren 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 & Formraum.

Ich hätte keine Probleme bei der Berechnung der Trägheit jedes einzelnen Polygons in der Form mit den Formeln auf der moments of inertia Wikipedia article zur Verfügung gestellt.

oder die in einem genialen collision detection & response article zur Verfügung gestellt.

Aber ich frage mich, wie ich dies mit meiner Objektstruktur in Beziehung setzen kann, füge ich einfach alle Trägheiten der Formen des Objekts hinzu? Das ist es, was ein anderer Autor zu calculate the inertia of triangulated polygons verwendet, fügt er alle Trägheitsmomente der Dreiecke hinzu. 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.

+0

@cha - ich glaube, Sie könnten die [W3C Leitlinien für Linktext] (http://www.w3.org/TR/WCAG10-HTML-TECHS/#link-text) lesen möchten. – Flexo

+0

@Flexo ich Sie nicht bekommen .... klären bitte – Chaitanya

Antwort

-1

Für lineare Bewegung können Sie sie einfach hinzufügen. Trägheit ist proportional zur Masse. Das Hinzufügen der Massen Ihrer Objekte und das Berechnen der Trägheit der Summe entspricht dem Hinzufügen ihrer individuellen Trägheiten.

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.

+0

-1: Nein, kann man nicht einfach sie hinzufügen. Selbst in 2D-Land müssen Sie sich um den Satz der parallelen Achse kümmern. –

+0

Ah, stimmt. Ich habe nur lineare Bewegung in Betracht gezogen. Pflege um zu erarbeiten? – Minthos

+2

Sie müssen den Massenschwerpunkt-Offset berücksichtigen. Denken Sie daran, was passiert, wenn Sie Punktmassen mit masselosen Stäben verbinden. Ein masselosen Stab hat keine Masse und daher kein Massenträgheitsmoment. Punktmassen haben kein Massenträgheitsmoment um den Massenmittelpunkt, so würde das Hinzufügen der Trägheitsmomente der Objekte Null ergeben. Das Hinzufügen der Parallelachsensatz-Offsets ergibt ein zusammengesetztes Objekt mit einem positiven Trägheitsmoment. –

2

Laurens, die Physik ist viel einfacher, wenn Sie im zweidimensionalen Raum bleiben. 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 von Steiner parallel axis theorem für jedes einzelne Objekt angegeben wird. 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 Buch ist gut für Anfänger auf Spielphysik ist wahrscheinlich in Ordnung. Sie finden eine Liste der empfohlenen Texte in this question at the gamedev sister site.

+0

Ahh ok, so der Autor des Artikels im letzten Link meines Beitrags war richtig. Wusste nicht über den Begriff "Parallelachsentheorem", danke, dass Sie darauf hingewiesen haben. – Laurens

+0

Ich verstehe, warum ich das Trägheitsmoment brauche, bin mir aber nicht sicher, wie ich es berechnen soll. Ist es normal, dass der Wert der Trägheit wirklich groß ist? Ich habe es so berechnet, wie du es beschrieben hast, aber das gibt mir große Zahlen. Wenn ich es für ein Objekt aus einem quadratischen Polygon mit einer Breite und Höhe von 80 teste, das mit seiner Mitte in der Mitte des Objekts platziert ist, lautet die Trägheit, die herauskommt: 3413333.3333333335. Ich berechne meine Objektmasse aus dem Bereich des Objekts mal einen Dichte-Skalar, der aktuell auf eins gesetzt ist. Ist das ein normales Ergebnis? Es scheint nur eine riesige Anzahl. – Laurens

+0

O und danke für diese Liste von Physikbüchern, du hast recht, ich könnte wirklich eine verwenden. Mein Kollision Antwort-Code gibt mir schrecklich fehlerhafte Ergebnisse zur Zeit – Laurens

Verwandte Themen