Berechnen der B-Spline Basis-Funktion
-
Hi,
mein Problem besteht darin dass ich es nicht auf die Reihe bekomme, die
B-Spline Basisfunktion in C++ code zu implementieren.i = das i-te Interval
p = der Grad des Splines
u = ein Punkt auf der Spline KurveDer Knotenvektor ist definiert als
[0, 1, 2, ..., n]Von daher brauche ich keinen extra Knotenvektor in meinem code,
weil der Anfang des i-ten Intervals i und das Ende des i-ten
Intervals i+1 ist.float N(int i, int p, float u) { if(p == 0) { if(u >= float(i) and u < float(i+1)) return 1.0f; return 0.0f; } return (u - float(i)) / float(p) * N(i, p-1, u) + (float(i+p+1) - u) / float(p+2) * N(i+1, p-1, u); }
Wenn ich jetzt eine Kurve mit 6 Kontrollpunkten und p=3 zeichnen will
dann bekomme ich keine B-Spline Kurve sondern ein Gebilde, das einem
Stern ähnelt.Weiß jemand was an meinem code falsch ist? Ich sitze jetzt schon
zwei Tage daran und verstehe einfach nicht was da falsch läuft.MfG
Plassy