OpenGL - Kubische Interpolation
-
Hey Leute
habe ein Probleme bei folgender Aufgabe:
Definieren Sie eine Klasse für kubische Interpolation mit uniformen Stützstellen.
Dabei sollen vier 3D-Punkte interpoliert werden bspw. mit Lagrange-Basis. Aber ich werde aus all meinen Quellen nicht schlau.
Mit Hilfe dieser Info ( http://www.malte-weiss.de/phalanx/CubicInterpolation.html ) habe ich mir folgende Funktion gebaut:
double Interpolation::makeCubicInterpolation(double field[], double x) { double P = (field[3] - field[2]) - (field[0] - field[1]); double Q = (field[0] - field[1]) - P; double R = field[2] - field[0]; double S = field[1]; return P * (x*x*x) + Q * (x*x) + R * x + S; }
Ich lass mir derzeit die 4 Kontrollpunkt als Spheren zeichnen und versuche die interpolierten zwischen Schritte mit weiteren kleineren Spheren darzustellen. Aber ich habe keine Ahnung wie genau dieser Polynom jetzt zu verwenden ist. Ist die Funktion überhaupt richtig? Wenn ja, wie wird der Paramter 'x' gewählt. Und wie genau bekomme ich die X, Y, Z - Werte der interpolierten Punkte?
Ich würde mich freuen, wenn mir jemand helfen könnte
-
x ist der Parameter der Kurve. für x = 0 bist du am ersten Kontrollpunkt, für x = 1 am letzten und für x = 0.5 hal in der Mitte.
Wenn du also die Kurve zeichnen möchtest, einfach zwischen 0 und 1 alle 0.01 auswerten.
Da P, Q, R & S die gleiche Dimension haben wie die Stützstellen kannst bekommst du die X,Y,Z Koordinaten indem du einfach ein x einsetzt.f(x) = (P.x, P.y, P.z)*(x*x*x) + ...
also ist f(x) auch ein tripel!
Gruss gast