Schnitte durch Flächen aus Messwerten

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
Jochen
Posts: 20
Joined: Fri May 29, 2015 12:25 pm

Schnitte durch Flächen aus Messwerten

Postby Jochen » Thu Jun 09, 2016 1:17 pm

Hallo Forum,
im Thread Fläche aus Messwerten hilft mir gerade User Microelly2 mit ganz erstaunlichen Möglichkeiten weiter (dafür danke ich Dir nochmal ganz ausdrücklich!).

Die gezeigten Lösungen und Möglichkeiten haben mich sofort auf weitere Einsatzszenarien gebracht:

wir gehen wieder von einer Fläche aus, die über ein Raster aus x mal y Rasterpunkten mit x*y z-Werten zwischen 0 und 1 gespannt sein soll. Wir nehmen weiter an, daß die Messwerte drei Hügel (nicht Spitzen) ergeben hätten. In der Realität würden wir viel mehr Hügel finden, aber hier reichen uns erst mal drei. Mit Hügel meine ich, daß die Messwerte in der Nähe der lokalen Maxima niedriger sind, diesen aber fast entsprechen. Ich weiß "Nähe" und "fast" sind unscharf :o) .

Gesucht ist die Ebene, die auf den drei Hügeln aufliegt. Die Ebene geht nur dann durch die drei lokalen Maxima, wenn diese gleich sind, bzw. wenn die Rasterung im Verhältnis zur Differenz der lokalen Maxima groß ist. Als Denkansatz würde ich eine Gerade durch je zwei der Maxima legen und schauen, ob diese irgendwo durch die Fläche stoßen. Wenn ja, müsste ein benachbarter Rasterpunkt angenommen und der Test wiederholt werden. So lange, bis für alle drei Geraden kein Durchstoß mehr gefunden würde.

Der eigentlich gesuchte Schnitt soll parallel unter der gefundenen Ebene, bspw. mit einem Offset von -0,1 liegen.

Wie würde ich die gesuchte Ebene und dann den Schnitt finden können?

Gruß,
Jochen
Jochen

--------------------------------------------
Freecad 0.17 daily build
+Assembly2
+Drawing Dimensioning

Ubuntu 16.04 64 bit
User avatar
microelly2
Posts: 4281
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Schnitte durch Flächen aus Messwerten

Postby microelly2 » Thu Jun 09, 2016 2:19 pm

Man nimmt eine Gerade durch zwei Maximalpunkte und projiziert die gesamte Cloud auf eine dazu senkrechte Ebene.
Dort gibt es für die Punktmenge eine obere Hüllkurve. Die Gerade erscheint als Punkt.
Gesucht ist jetzt eine Gerade, die durch diesen Punkt geht, oberhalb der Hüllkurve liegt und diese in einem Punkt berührt
das ist dann der Punkt, auf dem die gesuchte Ebene nach der Rückprojektion aufliegt).

Was man braucht, ist die Projektion von Punktmengen auf eine Ebene
das Finden der Hügel
und das Finden der beiden Haupthügel für die Gerade (kann ich mir bei vielen Hügeln noch nicht so recht verstellen,
im schlimmsten Fall probiert man alle Paare durch)
Jochen
Posts: 20
Joined: Fri May 29, 2015 12:25 pm

Re: Schnitte durch Flächen aus Messwerten

Postby Jochen » Thu Jun 09, 2016 6:10 pm

microelly2 wrote:Dort gibt es für die Punktmenge eine obere Hüllkurve
ich bin nicht sicher, ob ich das Wort "obere" richtig verstehe. Wenn Du das meinst, was ich als "äußere" Hüllkurve bezeichnet hätte, eine Kurve auf der Projektionsebene, die gerade eben alle Punkte umhüllt, dann ist es klar.
microelly2 wrote:Die Gerade erscheint als Punkt.
Ja, aber ich hätte gedacht, daß dieser Punkt mit hoher Wahrscheinlichkeit innerhalb/unter der Hüllkurve liegt. Bspw. bei einer flachen Kuppe oder zwei benachbarte, echte Maxima könnten einen relativ großen Höhenunterschied haben, so daß die durch sie gelegte Gerade derart schief liegt, daß sie wesentlich tiefer und weiter entfernt liegende Bereiche der Fläche durchstösst.

Daraus würde folgen, daß als Kandidat für die erste Gerade nur in Frage kommt, wer exakt auf der Hüllkurve liegt. Ich habe aber keine gute Idee, welchen Punkt auf der Hüllkurve man ersatzweise nehmen sollte, wenn es beim Test scheitert.

Wenn es möglich wäre, für einen beliebigen Punkt der Fläche mit Hilfe der acht benachbarten Punkte eine tangierende Ebene zu erzeugen, dann könnte man im ersten Schritt die Tangentailebene in z-max erzeugen und schauen, ob sie einen der übrigen Flächenpunkte berührt. Wenn nein, müsste man die acht Nachbarn durchprobieren. Wenn man einen Berührungspunkt gefunden hat, hat man die erste Gerade, die in der Projektion auf einer zu ihr senkrechten Ebene genau auf der Hüllkurve läge. Von da aus könnte es dann so weitergehen, wie Du beschrieben hast.

Ich seh' schon, ich muß Python lernen und mir die verfügbaren Libraries ansehen.

Was meinst Du?

Gruß,
Jochen
Jochen

--------------------------------------------
Freecad 0.17 daily build
+Assembly2
+Drawing Dimensioning

Ubuntu 16.04 64 bit
ulrich1a
Posts: 1872
Joined: Sun Jul 07, 2013 12:08 pm

Re: Schnitte durch Flächen aus Messwerten

Postby ulrich1a » Thu Jun 09, 2016 9:07 pm

microelly2 wrote:Man nimmt eine Gerade durch zwei Maximalpunkte und projiziert die gesamte Cloud auf eine dazu senkrechte Ebene.
Dort gibt es für die Punktmenge eine obere Hüllkurve. Die Gerade erscheint als Punkt.
Ich denke, dass dieser Ansatz im Allgemeinen nicht funktioniert. Die Gerade muss nicht horizontal zum Horizont liegen. Dies ist dann der Fall, wenn die beiden ersten Hügel unterschiedlich hoch sind. Die Normalebene zu dieser Geraden bewertet dann die anderen Hügelhöhen unterschiedlich, je nachdem auf welcher Seite der Ebene die Hügel liegen. Da wo die Ebene nach unten schaut, werden weit entfernte Hügel sehr hoch projeziert. Auf der anderen Seite der Ebene ist umgekehrt.
Wenn man die Hügel parallel zum Horizont auf die Ebene projeziert, ist die Gerade in dieser Projektion kein Punkt, sondern ein mehr oder weniger langer Strich.

Ich würde iterativ vorgehen:
1. Die drei höchsten Punkte in der Cloud suchen.
2. Eine Ebene durch diese drei Punkte legen.
3. In der unmittelbaren Umgebung der höchsten Punkte nachschauen, ob ein Punkt oberhalb der Ebene liegt. Wenn ja diesen Punkt statt des originalen für die Ebene nehmen.
4. weiter bei 2
Das Abbruchkriterium hängt davon ab, ob man auch Punkte am Horizont für die Ebene nehmen will. Das kann vorkommen, wenn die Ebene sehr schräg liegt. Ansonsten kann man abbrechen wenn ein vorgegebener oder sonstwie bestimmter Suchabstand von den Startpunkten erreicht ist.

Ulrich
User avatar
microelly2
Posts: 4281
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Schnitte durch Flächen aus Messwerten

Postby microelly2 » Thu Jun 09, 2016 9:31 pm

Meine Idee war:
Wenn man ein Rechteck vom Himmel fallen lässt, schlägt es zunächst auf dem ersten Hügel mit der Fläche auf (oder mit einer Ecke irgendwo),
dann kommt der Aufschlag auf dem zweiten Hügel (oder wieder ein Randereignis) und dann dreht sich das Rechteck um die Achse der beiden Aufschlagepunkte bis zum dritten Aufschlag.
Je größer das Rechteck, umso entscheidender sind die globaleren Maxima.

Ich dachte jetzt an ein Tool, bei dem man die Größe des Rechtecks und die ersten beiden Aufnschlagspunkte vorgibt und den dritten Punkt berechnen lässt.

Und dann kann man auch den zweiten Aufschlagpunkt durchrechnen.
Ich brauch für solche Sachen immer ersteinmal ein paar Simulationsdaten.
Mit der Blender Game Engine ist die Simulation kein großes Problem, aber entsprechende Werkzeuge für FreeCAD zu haben,die eine Abdeckung ausrechnen - das ist nochmal was anderes.
User avatar
microelly2
Posts: 4281
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Schnitte durch Flächen aus Messwerten

Postby microelly2 » Sun Jun 12, 2016 8:01 pm

Ich hab erstmal ein Werkzeug geschrieben, mit dem man Elevationgrid-Pointclouds kombinieren kann.
https://youtu.be/ug9JVNlqimQ
Jetzt kann man mal drüber nachdenken, welche Funktion die Auflageebene in drei Punkten beschreibt.
Vielleicht geht es auch mit einer Animation, die bei Lageveränderung einer Ebene immer die Kollision mit dem Gelände zeigt.