Massepunkt
-
Wie kann man denn den Massepunkt eines beliebigen 2D Körpers herrausbekommen ... ich habe mir hierzu was iteratives ausgedacht funzt auch aber langsam und ungenau!
Bitte um Hilfe! THX!!
-
Ganz beliebig? Wie speicherst Du sowas denn? Oder sind Deine Teile durch Strecken begrenzt?
-
Richtig! Der Körper besteht aus aneinandergereiten Strecken ... somit ist die Form also bekannt, jedoch möchte ich wissen, ob es ein allgemeines Verfahren zur Bestimmung des Massepunktes gibt.
-
Ich nehme mal an, Du meinst den Schwerpunkt und Deine Figur ist ein Polygon.
Du könntest es einfach durchtriangulieren und von jedem Dreieck den Schwerpunkt berechnen (geht einfach) und dann den Durchschnitt der Dreiecksschwerpunkte gewichtet mit den Dreiecksflächen bilden. Das ist dann genau der Schwerpunkt der ganzen Figur. Das sollte sich mit etwas Mühe wohl in O(n), n Anzahl der Ecken, die die Figur begrenzen, realisieren lassen.
MfG Jester
-
So sah meine Lösung auch aus ... das Problem auf bekannte Situationen zurückführen, den Körper also in lauter kleine Drei- Vierecke zerlegen und dann den durchschnitt der Masse(achso ich meine tatsechlich Schwerpunkt) bilden.
Herzlichen Dank für deine schnelle Antwort.
-
Naja, viel schneller kann es wohl nicht werden, da Du Dir schon jeden Punkte mindestens einmal anschaun mußt. In Deinem 1. Post schreibst Du Dein Verfahren sei ungenau. Wie kommt das? Eigentlich müßte damit doch eine exakte Lösung berechnet werden.
-
Ich hatte zu erst ein anderes Verfahren zur Berechnung des Schwerpunktes. Für einfache Formen hat das auch wunderbar funktioniert ... je komplizierter die Formen wurden, desto ungenauer wurde die Lösung ... da ich das Verfahren auf einem Blatt Papier entwickelt habe, habe ich logischerweise auch nur einfache Formen verwendet ... das Verfahren ist auch eigendlich blödsin und kann nicht klappen ... das von dir benannte Verfahren ist zwar sehr langsam, aber es ist wohl zwingend notwendig jeden Eckpunkt zu betrachten und somit je komplexer der Körper, desto langer die Berechnung ...
-
Michi_ schrieb:
das von dir benannte Verfahren ist zwar sehr langsam, aber es ist wohl zwingend notwendig jeden Eckpunkt zu betrachten
Was erwartest du? einen algorithmus mit konstanter zeit??? lol
Ist doch selbstverständlich dass du JEDEN punkt anschauen musst, denn die Punkte machen ja schließlich die Form aus! du bist mir ein vogel
-
Also solange sich ein Körper nicht verändert, muss man das ja nicht neu berechnen.
Ich würde sogar so weit gehen zu sagen, du speicherst das irgendwo im Objekt mit. Im günstigsten Fall ändern sich die Formen ja auch nicht mehr.
-
Im günstigsten Fall heißt ohne Verformung. Da ich das ohne Verformung brauche ist das OK. Und zwischenspeichern ist sinnfoll, da ich nicht für jeden Frame das alles brechnen kann und erst recht nicht für 100te von Objekten
-
Transformationen kannst Du ja zumeist auch einfach auf dem Schwerpunkt mitberechnen. Verschiebung und Rotation klappt auf jeden Fall.