Grüß euch
Ich benötige für eine Kurvenglättung eine Interpolationsmethode und habe
aus diesem Grund eine kurze Funktion geschrieben, die kubische Splines
erzeugt.
Die Ergebnisse der Funktion bestehen aus den drei Koeffizienten der
Splines und werden in eine Struktur gepackt.
1 | struct Spline
|
2 | {
|
3 | float a3;
|
4 | float a2;
|
5 | float a1;
|
6 | };
|
Nun habe ich folgendes Problem. Aus irgendeinem Grund hängt das
Rechenergebnis der Interpolation von der Reihenfolge ab mit der ich die
Variablen vor dem Funktionsaufruf anlege.
Und zwar rechnen folgende Zeilen richtig:
1 | int32_t start;
|
2 | int32_t high;
|
3 | int32_t mid;
|
4 | Spline spline_cubic[3] = {};
|
5 | float x[4] = {0.1, 1.3, 1.9, 2.1};
|
6 | float y[4] = {1.3, 1.5, 1.7, 2.1};
|
7 | uint32_t n = 4;
|
8 |
|
9 | splineCubicSet(x, y, n, spline_cubic);
|
Und folgende Zeilen falsch?
1 | int32_t start;
|
2 | int32_t high;
|
3 | int32_t mid;
|
4 | float x[4] = {0.1, 1.3, 1.9, 2.1};
|
5 | float y[4] = {1.3, 1.5, 1.7, 2.1};
|
6 | uint32_t n = 4;
|
7 | Spline spline_cubic[3] = {};
|
8 |
|
9 | splineCubicSet(x, y, n, spline_cubic);
|
Hat jemand ev. eine Idee woran das liegen könnte?