![]() |
BestFit Ebenengleichung durch Punktwolke
Hallo,
eigentlich ist meine derzeitige Sprache MATLAB, da hab ich nur leider kein vernünftiges Forum gefunden. Hatte letztes Jahr hier immer gute Erfahrungen gemacht... Ich möchte den Tangentialvektor an einen Punkt (eines Körpers) im Raum finden. Mit der Hess'schen Normalform dürfte das nicht so schwer werden: ax+by+cz=d, der Vektor ist dann (a,b,c) Klassifiziert ist mein Körper durch p1(x1,y1,z1) bis pn(xn,yn,zn), den Punkt, an dem ich ableiten möchte, kenne ich auch und damit die Punkte, durch die die Ebene gehen soll (also best fit mässig...). Ich habe jetzt folgendes Problem: Wie finde ich die Best-Fit-Ebene durch eine Punktwolke ? für n=3 gibt es Formeln, um die Ebene aufzuspannen, aber für mehr als drei habe ich nix gefunden. a, b und c für 3 Punkte erhalte ich durch Lösung des LGS: ![]() ![]() Wie sähe das ganze für mehr als drei Punkte aus ? Wird das ein Optimierungsproblem? [edit=Matze]Hinweis zum Verschieben des Themas aus dem Beitrag und der Überschrift entfernt. MfG, Matze[/edit] |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Sonstige Fragen zu Delphi" nach "Programmieren allgemein" verschoben.
|
Re: BestFit Ebenengleichung durch Punktwolke
kannst du das ein bischen präzisieren? Ich verstehe dein Problem so: Du hast eine Punktwolke, die einen Körper beschreibt und einen Punkt an deren Oberfläche (also aussen, genau wäre das ein bischen schwer zu definieren), durch den du eine Tangentialfläche zu dem Körper angeben willst.
Wenn dein Körper konvex ist, könntest du erst die konvexe Hülle berechnen und dann einfach das Dreieck auswählen, das den geringesten Abstand zu deinem Punkt hat. Wenn dein Körper allerdings nicht konvex ist, wird das ganze ein bischen schwieriger, da könntest du das gleiche Verfahren nehmen, dabei aber statt der konvexen Hülle die alpha-shape der Punktwolke einsetzen. Dafür könntest du z.B. cgal einsetzen, eine recht unfangreiche aber freie Bibliothek zur Computergeometrie. |
Re: BestFit Ebenengleichung durch Punktwolke
Äh, :oops: hab vergessen zu erwähnen, dass die Punkte nur auf der Hüllfläche des Körpers einen Wert haben, innen drin sind die genau so wie draussen Null.
Deswegen muss ich nicht weiter betrachten, ob die Punkte nun "im" Körper sind oder nicht<. ich ziehe einfach eine Kugel um den zu untersuchenden Punkt und erhalte dann die Punktwolke, durch die die Ebene gehen soll. Danke für den Tipp mit cgal, ich glaube, ich hab jetzt die korrekte englische Bezeichnung gefunden: "least square plane fitting" ich wusel mich mal durch google durch... |
Re: BestFit Ebenengleichung durch Punktwolke
Zitat:
das heisst einfach: wähle die Ebene so, dass die Summe der Quadrate der Abstände aller Punkte zur Ebene minimal wird. Typische Optimierungsaufgabe. Gruss Reinhard |
Re: BestFit Ebenengleichung durch Punktwolke
:dp:
hab sogar schon was in M-Code gefunden :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz