ich habe im wiki nichts zu Kollisionen gefunden falls ich was übersehen hab tuts mir leid.
Also ich versuche mich gerade an einer kleinen Physikengine und komme mit Bällen super klar, Probleme bereiten mir eher Würfel, da geht es mir um die Verarbeitung denn ich will die Würfel ja zB. rotieren lassen wenn sie weit aussen an einer Ecke getroffen werden.
Hat jemand schonmal sowas gemacht und kann mir mit dem Würfel helfen?
Das ist im Grunde einfach: Würfel A spannt einen Raum auf mit sechs Begrenzungsebnenen (ähnlich eines Frustums), allerdings sind jeweils zwei dieser Ebenen Parallel, was die Sache stark vereinfacht. Du suchst die drei Ebenengleichungen der an einer Ecke anliegenden Ebenen raus (und zwar so, dass die Normale in den Würfel zeigt, das ist wichtig). Jetzt berechnest Du für jede Ecke des Würfels den Abstand zu jeder der drei Ebenen.
Dieser Abstand wird wie folgt verhackstückt: ist er kleiner Null, liegt der Punkt ausserhalb. Ist er größer als die Kantenläne liegt er auch ausserhalb. Das Ergebnis schreibst Du in ein Bitfeld: 1.Bit links, 2.Bit oben, 3.Bit vorne, 4.Bit rechts, 5.Bit unten, 6.Bit hinten, also immer das Bit setzen, wenn der Punkt an der jeweiligen Seite ausserhalb liegt.
Ist dieses Bitfeld für mindestens einen Punkt leer, dann liegt der Würfen B im Würfel A (weil eine Ecke drin liegt).->Kollision
Ist keines Null, dann wirds komplitierter:
Jetzt verknüpfst Du alle mit UND. Ist das Ergebnis nicht null, liegt er ausserhalb, und zwar komplett auf einer (oder mehreren) Seite, also links ODER rechts und/oder oben ODER unten... -> keine Kollision
Ist das Ergebnis jetzt Null wirds noch komplizierter: Jetzt verknüpfst Du die Ergebnisse Paarweise UND Ist eins der Ergebnisse Null, so liegt diese Kante innerhalb A ->Kollision
_________________ Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.
Registriert: Fr Mai 14, 2004 18:56 Beiträge: 804 Wohnort: GER/OBB/TÖL-WOR/Greiling
...dann musst du rausfinden, wo die Kollision stattfindet, und den hebel zum Schwerpunkt des Würfels (Mitte) berechnen. Um diesen Schwerpunkt wird sich der Würfel dann drehen. allerdings wirkt die übertragene Stoßenergie nicht nur auf die Rotationsgeschwindigkeit, sondern der Würfel wird auch in Richtung des übertragenen Impulses beschleunigt.
Faustwerte, wie viel Prozent des übertragenen Impulses in Dreh-, Bewegungs-, Stauch- (wohl zu vernachässigen) und innere Energie (=Temperaturerhöhung, bei Kollision zweier Würfel wohl auch vernachlässigbar) umgewandelt wird, solltest du finden.
Also ne menge Arbeit
Du kannst natürlich auch Newton oder ODE verwenden, das sind Physikengines bzw. -Solver, die dir das ganze rechnen abnehmen. Sind aber auch nicht ganz trivial in der Anwendung/Einarbeitung.
Ne ich will das schon ganz gerne selber schaffen, das ist ja quasi der Sinn der ganzen Engine. (soll kein Spiel werden)
Kann mir jemand das mit dem Hebelpunkt noch genauer erklären? Also eine Schnittfläche bekomme ich bestimmt irgendwie berechnet, aber was mache ich dann mit der?
Würfel geht ja noch, da ist freie Rotation genauso einfach wie bei der Kugel (konstante (vektorielle) Winkelgeschwindigkeit). Richtig eklig wirds dann ab Quader. Da sind dann nicht mehr alle Hauptträgheitsmomente gleich, und die Rotation wird durch ziemlich hässliche differentialgleichungen beschrieben, die nur numerisch lösbar sind.
Für Kollision musst du erst den Kollisionspunkt, dann die Kraftrichtung festlegen. Damit hast du das Problem für jeden der körper auf eine Ebene reduziert. Nun kannst du die Energie der beiden Körper in abhängigkeit des Kraftbetrages errechnen, und anschließend die Energieerhaltung anwenden (für elastischen Stoß). Das sollte dann 2 Lösungen ergeben, einmal F=0 und einmal das gewünschte F. Mit dem gewünschten F kannst du dann die neuen Daten der Körper (Winkelgeschwindigkeit, Geschwindigkeit) errechnen.
Eine Praktische lösung wird wohl die Erhaltungssätze (Energie,Impuls,Drehimpuls)verwenden.
Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.