2016-05-02 6 views
4

Ich habe eine Sammlung von (x, y, z) Punkte mit entsprechenden Normalen und Werten an diesen Punkten. Die Daten liegen also in der Form [x y z nx ny nz c] vor. Ich möchte eine 3D-Fläche über diesen Punkten zeichnen, die senkrecht zu diesen Normalen steht und eine Farbe hat, die dem Wert entspricht. Also, was ich will, ist eine Art umgekehrte surfnorm.Plot 3D-Oberfläche von Normalen und Punkten

Ich habe es geschafft, eine Oberfläche mit meshgrid, interp2 und surf zu plotten, aber dies berücksichtigt nicht die Normalen. Ich kam auch auf die Idee, die Oberfläche so zu gestalten, dass kleine Quadrate rechtwinklig zur Normalen gezeichnet wurden. Ich habe es geschafft, aber ich sehe keinen Weg, den Raum zwischen den Quadraten zu "füllen", weil die Punkte unregelmäßig verteilt sind.

Was ist ein guter Weg, dies zu erreichen?

+0

Haben Sie versucht, die Oberfläche zu "passen"? http://www.mathworks.com/help/curvefit/fit.html – Crowley

+0

Sollte die Oberfläche mit den Daten _everywhere_ _exactly_ übereinstimmen? – tvo

+0

Oh, und eine andere Frage: Gibt es eine Struktur in den Daten? Z.B. sind die Punkte auf einer strukturierten Masche in (x, y)? Bitte fügen Sie diese Informationen zur Frage hinzu. – tvo

Antwort

1

Ich sehe zwei Möglichkeiten:

1) entweder eine direkte geometrische Rekonstruktion tun Polygone auf die Punkte und Normalen basiert. Ich denke, die patch Funktion wäre in diesem Zusammenhang nützlich. Es ermöglicht die Einstellung einer Farbe. Nachteil: Sie müssen in Ausnahmefällen viel manuelle Bearbeitung und Bearbeitung vornehmen.

2) Angenommen, eine Anpassungsfunktion, z.B. 2D-Polynome, und verwenden Sie einen Optimierungsansatz, um die Daten zu vergleichen. Sie benötigen eine Zielfunktion, die einerseits die Daten x, y, z und andererseits die normalen Komponenten nx, , nz berücksichtigt. Nachteil: Es ist unwahrscheinlich, dass Sie eine genaue Darstellung der Originaloberfläche erhalten, auch abhängig von Ihrer Wahl der Anpassungsfunktion.

Verwandte Themen