Berechnen des Schwerpunktes in einem B-Rep Modell



  • Hallo zusammen,

    Ich habe verschiedene 3D-Modelle als B-Rep vorliegen. Das ganze ist auch schon trianguliert. Nun soll ich den Schwerpunkt berechnen.
    Hat jemand eine Idee wie man das macht ?
    Irgendwie finde ich nichts vernünftiges was mich in der Sache weiterbringt.



  • Heisst B-Rep, dass du die Boundary von einem Körper vorliegen hast (z.b. als Dreiecke?). Falls dein Körper eine homogene Massenverteilung hat, kannst du die Volumenintegrale mit irgendwelchen Intgeralsätzen in ein Oberflächenintegrale transformieren. Das Oberflächenintegral kann dann Stückweise über deine Oberflächenelemente integriert werden.

    Gehts dir darum? Dann kann ich das mal bei Gelegenheit nachschauen.


  • Mod

    Ich weiß nicht genau, wie man sich unter einer B-Rep vorzustellen hat, aber ich nehme doch mal an, dass du feststellen kannst, ob ein Ort innerhalb oder außerhalb der Struktur ist? Falls ja: Einfach numerisch integrieren. In 3D sind einfache numerische Verfahren (Trapezregel & Co) noch effizient; da braucht man keine höhere Numerik für.



  • Wichtig ist natürlich der Satz von Gauss (so lange f und das Volumen V hinreichend lieb sind)

    _VfdV=_SfndS\int\_V \nabla f dV = \int\_S f \vec{n} dS

    (n zeigt aus dem Körper heraus)

    Setzt man f(x,y,z) = z, ist jeweils die dritte Komponente auf jeder der beiden Seiten das Volumen des Körpers, also

    Vol=_VdV=_Szn3dSVol=\int\_V dV = \int\_S z n_3 dS

    Ähnlich kommst du an den Schwerpunkt.



  • SeppJ schrieb:

    da braucht man keine höhere Numerik für.

    Besser vorher etwas Analysis machen, dann gehts auch in 2D



  • Fast vergessen: Im allgemeinen geht das nur für geschlossene Körper.



  • B-Rep ist ein Punkte - Kanten - Flächen Modell.
    Das Modell kann alle möglichen Formen haben, Aussparungen und Löcher. (Deshalb die Triangulierung)

    Ich brauche den genauen Schwerpunkt weil dieser später eingezeichnet werden muss.



  • Was meinst du hier mit "Löchern"? Ein Loch wie bei einem Torus? Das ist nicht schlimm. Oder ein Loch, wo einfach ein Stückchen Oberfläche fehlt (wie ein Fenster in einem Haus)? Das wäre sehr schlimm. Dann hättest du ja gar keinen echten Körper (solid) mehr, der durch seine Oberfläche eindeutig definiert ist.

    Oder willst du einfach davon ausgehen, dass nur deine Oberfläche Masse hat und der Körper innen hohl ist? Quasi eine "Flächenmasse". Dann musst du ganz ohne Transformation nur über die Oberfläche integrieren.

    Was hast du denn nu genau als Eingangsdaten gegeben? Eine Triangulierung der Aussenhaut? (Oder dein Punkte-Kanten-Flächen-Modell? Mit was für Flächen?)
    Von was für Eigenschaften kannst du ausgehen?

    Und was für einen Schwerpuntk suchst du?

    ps: http://mathworld.wolfram.com/DivergenceTheorem.html
    Da steht noch mal der Satz, den ich oben (mit einem Schreibfehler) benutzt habe.



  • Mit löcher meine ich Ausschnitte. Wir z.B. Fenster in einem Haus.
    Ich habe Flächen die über ihre Kanten beschrieben sind. Diese verweisen wiederum auf die Punkte. Das ganze ist trianguliert um dieses zeichnen zu können.

    Ich suche den Massenschwerpunkt des Körpers.
    Muss möglich sein weil es jedes CAD-Programm anbietet. Nir irgendwie komme ich nicht weiter weiol ich ja keinen geometrischen Grundkörper habe.



  • Versuche trotzdem mal, was ich oben geschrieben habe (sollte einfach zu implementieren sein, wenn du die Triangulierung schon hast). Wir hoffen mal, dass die Löcher nicht zu garstig werden (wenn sie symmetrisch zueinander angeordnet sind, kann sich der Fehler vielleicht sogar aufheben) und dass deine Triangulierung anständig ist.

    Ich schreibe es nochmal formal korrekt auf (oben habe ich aus einem komischen Skript abgeschrieben):

    Satz von Gauss (Divergenzsatz):

    _VF˙dV=_SFndS\int\_V \nabla \dot F dV = \int\_S F \cdot n dS

    F ist eine vektorwertige Funktion, n der nach aussen zeigende Normalenvektor. §\nabla \dot F = div(f)

    F=(0,0,z): $$Vol=\int_V 1 dV = \int_S z n_3 dS$$
    F=(0,0,xz): $$x_g Vol=\int_V x dV = \int_S xz n_3 dS$$
    F=(0,0,yz): $$y_g Vol=\int_V y dV = \int_S yz n_3 dS$$
    F=(0,0,0.5 z^2): $$z_g Vol=\int_V z dV = 0.5 \int_S z^2 n_3 dS$$

    Die Integrale über die Oberfläche im ersten Schuss stückweise über alle Dreiecke mit der Mitelpunktsregel auswerten, also z.b.

    \int\_S z n3 dS = \sum\_{\mbox{Dreiecke}} z\_m n\_3 A

    z_m: z-Koordinate des Dreiecksmittelpunkts, n_3 z-Komponente des Einheitsnormalenvektors, A Dreiecksfläche.

    Du kannst ja mal einen Screenshot hochladen, ob es geklappt hat 🙂



  • Noch ne doofe Frage: Kennst du deine Löcher? (sind die irgendwie vernünftig modelliert?)

    Dann kannst du die ja "heimlich" triangulieren und hast eine vollständige Randbeschreibung.


Anmelden zum Antworten