Hallo!
Um die Masse, den Inertiatensor und den Massenschwerpunkt eines Objektes zu berechnen muss man ja Volumenintegrale lösen. Wenn es sich um konvexe Objekte handelt, kann man diese mittels des Divergenztheorems und Green's Theorem auf ein Linienintegral zurückführen, welches dann ohne weiteres einfach zu berechnen ist. Wenn es sich aber nun um nicht konvexe Objekte handelt, dann treffen diese beiden Theoreme nicht mehr zu.
Ich möchte aber (wenn möglich) meiner Physikengine die Möglichkeit geben auch NICHT-KONVEXE Objekte zu handhaben. Mal abgesehen von einer performancelastigeren Kollisionsdedektierung müsste ich auch die drei oben genannten Größen für jedes Objekt berechnen können. Habt ihr eine Idee wie ich das anstellen könnte?
Ich hab mir auch mal überlegt ob ich nicht "einfach" das nicht-konvexe Objekt in konvexe Bereiche aufteilen könnte. Damit wäre das Problem dann auch gelöst, doch mir scheint, dass aus einem gegebenen Set von Polygonen V eine Menge M von Subsets S zu finden, wobei jedes Element von M konvex ist, ein Problem in np-complete ist. Oder?
Ich hoffe ihr könnt mir helfen! Danke!
EDIT:
OHA, jetzt hab ich einen Bock geschossen
Ein BSP Tree liefert mir doch alles konvexe Bereiche! (nichts np-complete
sry) Bleibt noch die Frage ob ich für die Kollision ein angenähertes konvexes Polytope (im einfachsten Fall einen OBB) oder die nichtkonvexe-Form in form eines BSP-Trees verwenden soll...
Was meint ihr?