Skid
Erfahrenes Mitglied
Hallo zusammen,
ich habe derzeit ein Problem welches ich mit Spline und Interpolation lösen kann, ich jedoch nicht so recht zurecht komme.
Zuerst einmal zum Problem selbst:
Ich habe ein Programm welches eine Kamerafahrt im dreidimensionalen Raum möglich macht.
Derzeit verlaufen die Wege von Punkt zu Punkt linear, jedoch möchte ich eine bestimmte Weichheit (evtl. durch Stufen einstellbar), was die Kurven angeht, einfügen.
Hierbei bin ich über Interpolation, Polynominterpolation, Hermiteinterpolation, Bezier-Kurven und Splines gestoßen, konnte jedoch nur wirklich Polynominterpolation anwenden, was heißt, dass Interpolation und Hermiteinterpolation für mich _jetzt_ nicht mehr notwenig ist.
Problem bei der Polynom-Interpolation selbst ist folgender:
Ich habe bespw. eine Menge von Punkten, sagen wir mal 5,die ich interpolieren möchte, was ohne Probleme klappt, jedoch sieht man bei der Interpolationsformel, schon bei 5 Punkten, dass diese ungeahnte Ausmaße annimmt.
Mein Programm ist bei der doppelten Anzahl von Punkten schon überfordert.
Sagen wir aber mal, ich teile bspw. 12 Punkte in Intervalle (4 Punkte am Stück) und aktualisiere die Interpolationsgleichung immer beim 3 Punkt.
Dürfte eigentlich ohne Probleme funktionieren...
Problem ist hier jedoch, dass ich nicht abfangen kann, wann die Kamera beim dritten Punkt ist oder darüber.
Im dreidimensionalen Raum zu berechnen, wann der dirtte Punkt erreicht ist, ist für mich zu aufwendig.
Ich dachte mir dass ich die Zeit zu Hilfe nehme, da ich sowieso die Variable t gegeben habe, welche einen maximalen Intervall von t = [0|1] enthält (somit die Position) und ich somit den Fortschirtt beobachten/bestimmen kann.
Jedoch kann ich aus meiner Formal, bspw. 5ten oder 4ten Grades, den t-Wert nicht mehr bestimmten, da allgemein gilt:
Meine Frage:
Ist es möglich den t-Wert zu bestimmten, wenn man einen Punkt gegeben hat und die dazugehörige Formel ?
Zu Splines:
Splines scheinen in ihrer Dynamik wesentlich mehr attrkativ zu sein, als wie Interpolationskurven, da Interpolationskurven das Problem beinhalten, dass die Kurve ,von einem zu einem anderen Punkten, eine zu große Frequenz annimmt.
Ich habe mich hier etwas damit auseinander gesetzt, finde jedoch keinen Anschluss.
Kann mir evtl. jemand die Berechnung von Splines an einen Beispiel erklären ?
(Muss nich unbedingt der dreidimensionale Raum sein)
Das würde mir sehr helfen und so könnte ich denke ich auch durch das Formelgewirr durchblicken.
Liebe Grüße und Danke für eure Zeit,
SkiD.
ich habe derzeit ein Problem welches ich mit Spline und Interpolation lösen kann, ich jedoch nicht so recht zurecht komme.
Zuerst einmal zum Problem selbst:
Ich habe ein Programm welches eine Kamerafahrt im dreidimensionalen Raum möglich macht.
Derzeit verlaufen die Wege von Punkt zu Punkt linear, jedoch möchte ich eine bestimmte Weichheit (evtl. durch Stufen einstellbar), was die Kurven angeht, einfügen.
Hierbei bin ich über Interpolation, Polynominterpolation, Hermiteinterpolation, Bezier-Kurven und Splines gestoßen, konnte jedoch nur wirklich Polynominterpolation anwenden, was heißt, dass Interpolation und Hermiteinterpolation für mich _jetzt_ nicht mehr notwenig ist.
Problem bei der Polynom-Interpolation selbst ist folgender:
Ich habe bespw. eine Menge von Punkten, sagen wir mal 5,die ich interpolieren möchte, was ohne Probleme klappt, jedoch sieht man bei der Interpolationsformel, schon bei 5 Punkten, dass diese ungeahnte Ausmaße annimmt.
Mein Programm ist bei der doppelten Anzahl von Punkten schon überfordert.
Sagen wir aber mal, ich teile bspw. 12 Punkte in Intervalle (4 Punkte am Stück) und aktualisiere die Interpolationsgleichung immer beim 3 Punkt.
Dürfte eigentlich ohne Probleme funktionieren...
Problem ist hier jedoch, dass ich nicht abfangen kann, wann die Kamera beim dritten Punkt ist oder darüber.
Im dreidimensionalen Raum zu berechnen, wann der dirtte Punkt erreicht ist, ist für mich zu aufwendig.
Ich dachte mir dass ich die Zeit zu Hilfe nehme, da ich sowieso die Variable t gegeben habe, welche einen maximalen Intervall von t = [0|1] enthält (somit die Position) und ich somit den Fortschirtt beobachten/bestimmen kann.
Jedoch kann ich aus meiner Formal, bspw. 5ten oder 4ten Grades, den t-Wert nicht mehr bestimmten, da allgemein gilt:
Code:
I = t^n * F(n) + t^(n-1) * F(n-1) + ... + t * F(1) + F(0)
Meine Frage:
Ist es möglich den t-Wert zu bestimmten, wenn man einen Punkt gegeben hat und die dazugehörige Formel ?
Zu Splines:
Splines scheinen in ihrer Dynamik wesentlich mehr attrkativ zu sein, als wie Interpolationskurven, da Interpolationskurven das Problem beinhalten, dass die Kurve ,von einem zu einem anderen Punkten, eine zu große Frequenz annimmt.
Ich habe mich hier etwas damit auseinander gesetzt, finde jedoch keinen Anschluss.
Kann mir evtl. jemand die Berechnung von Splines an einen Beispiel erklären ?
(Muss nich unbedingt der dreidimensionale Raum sein)
Das würde mir sehr helfen und so könnte ich denke ich auch durch das Formelgewirr durchblicken.
Liebe Grüße und Danke für eure Zeit,
SkiD.
Code:
Zu meiner Berechnung ein Beispiel für die Interpolation:
P0 [5|3]
P1 [1|4]
P2 [4|2]
P3 [1|2]
T-Werte:
P0 t = 0
P1 t = 1/3
P2 t = 2/3
P3 t = 3/3 = 1
(Wenn ich die t-Werte von P1 und P2 in meine Formel [unten] eintrage,
dann komme ich nicht auf den Punkt P1, P2)
Berechnung Matrix M der t-Werte:
M = [0,0,0,1; (1/3)^3,(1/3)^2,(1/3)^1,1; (2/3)^3,(2/3)^2,(2/3)^1,1; 1,1,1,1]
M^(-1) = -möchte ich hier jetzt nicht alles eintragen-
P-Vektor der Dimensionen:
Px = [5,1,4,1]
Py = [3,4,2,2]
Multiplikation mit der inversen Matrix:
Fx = M^(-1) * Px = [-58.5, 90, 35.5, 5]
Fx = M^(-1) * Py = [22.5, -36, 12.5, 3]
Endgültige Interpolationsformeln:
Ix = -58.5 * t^3 + 90 * t^2 + 35.5 * t + 5
Iy = 22.5 * t^3 - 36 * t^2 + 12.5 * t + 3