|
Hallo, für folgendes Problem suche ich eine Lösung: Ich habe eine 3D-Matrix aus (X,Y,Z)-Werten, die eine Oberfläche beschreiben. Die Daten sind strukturiert, liegen aber auf einem Grid, der nicht genau rechtwinklig ist und keine gleichmäßigen Abstände hat. Die Fläche ist annähernd rechteckig und relativ glatt sowie stetig. Ich möchte nun Werte zwischen den bekannten Stützpunkten interpolieren, wozu vermutlich eine Spline-Oberfläche am besten geeignet sein dürfte. Hierzu liegt mir ein Package NumericalMath`BsplinesCurvesSurfaces` von Robert Ipanaque vor, welches aus der MathSource stammt (http://library.wolfram.com/infocenter/MathSource/5132/). Es existiert auch ein kleines Notebook, welche unter anderem die Funktion "surface" beschreibt. Dieses Beispiel habe ich hier aufgelistet: << NumericalMath`BsplinesCurvesSurfaces` p = { {{0, 0, 0}, {1, 0, 0}, {2, 0, 0}, {3, 0, 0}, {4, 0, 0}, {5, 0, 0}, {6, 0, 0}}, {{0, 1, 0}, {1, 1, 1}, {2, 1, 1}, {3, 1, 1}, {4, 1, 1}, {5, 1, 1}, {6, 1, 0}}, {{0, 2, 0}, {1, 2, 1}, {2, 2, 1}, {3, 2, 1}, {4, 2, 1}, {5, 2, 1}, {6, 2, 0}}, {{0, 3, 0}, {1, 3, 1}, {2, 3, 1}, {3, 3, 1}, {4, 3, 1}, {5, 3, 1}, {6, 3, 0}}, {{0, 4, 0}, {1, 4, 1}, {2, 4, 1}, {3, 4, 1}, {4, 4, 1}, {5, 4, 1}, {6, 4, 0}}, {{0, 5, 0}, {1, 5, 1}, {2, 5, 1}, {3, 5, 1}, {4, 5, 1}, {5, 5, 1}, {6, 5, 0}}, {{0, 6, 0}, {1, 6, 0}, {2, 6, 0}, {3, 6, 0}, {4, 6, 0}, {5, 6, 0}, {6, 6, 0}} }; s = Surface[p]; PiecewiseForm[{s}]; g = ParametricPlot3D[s // Evaluate, PlotPoints -> {15, 15}]; Show[g, Graphics3D[{RGBColor[1, 0, 0], Map[Line, p], Map[Line, p // Transpose]}] ] Der ausgegebene Plot zeigt eine gute Interpolation der vorgegebenen Oberfläche (aus p), die "Feinheit" kann man mit den Parametern in PlotPoints steuern. Leider ist es mir trotz einigen Probierens nicht gelungen, die grafisch offensichtich vorhandenen Interpolationsdaten als Zahlenwerte in der Form Z= f(X,Y) den vorliegenden Zeilen zu entlocken. Anfragen beim Urheber blieben bisher auch unbeantwortet, daher würde ich mich sehr über Hilfe in dieser Frage freuen. Alternativ wäre mit natürlich auch mit jeder anderen Strategie, die obige Interpolation leistet und Zwischenwerte zugänglich macht, zufrieden. Eine Alternative, die sich mir leider nicht erschließt, wäre die Umleitung der grafischen Werte in ein Listfile, allerdings gelingt mir dies nur in der Form von Polygonen, die zur einfachen Weiterverarbeitung nicht taugen; einfache (X,Y,Z)-Punkte in einer entsprechend feineren Matrix als der Stützpunktmatrix wären das Ziel. Auf Wunsch kann ich die oben angesprochenen Dateien auch zumailen, sie sind jedoch auf MathSource (s.o.) frei zugänglich. Danke im Voraus, I.Tahhan |