prev up inhalt next

B-Splines

Es sollen nun nicht alle Stützpunkte Einfluß auf den gesamten Kurvenverlauf haben und der Grad der Polynome soll unabhängig von der Zahl der Stützpunkte sein.

Spezifiziere die Kurve durch $n+1$ Stützpunkte $P_{0}, \ldots ,P_n $ und einen Knotenvektor
$T = (t_{0}, t_{1}, \ldots , t_{n + k}), t_{j} \leq t_{j+1}$.

\begin{displaymath}
P(t)= \sum_{i=0}^{n} N_{i,k} (t) \cdot P_{i}
\end{displaymath}

Die Punkte $P_i$ wirken sich nur auf maximal $k$ Kurvenabschnitte aus und werden gewichtet durch die Basis des B-Splines, Polynome $N_{i,k} (t)$ vom Grad $k-1$ ( $0 \leq i \leq n$) :


$\displaystyle N_{i, 1} (t)$ $\textstyle =$ $\displaystyle \left\{ \begin{array}{ll}
1& \mbox{ falls } t_i \leq t < t_{i+1}\\
0& \mbox{ sonst}
\end{array}\right.$ (7.1)
$\displaystyle N_{i,k} (t)$ $\textstyle =$ $\displaystyle \frac {t-t_{i}}{t_{i+k-1}-t_{i} } \cdot
N_{i,k-1}(t)+ \frac{t_{i+k}-t}{t_{i+k}-t_{i+1}} \cdot N_{i+1,k-1} (t), ~ k>1$ (7.2)

Bei Division durch Null wird der Quotient gleich $0$ gesetzt.
Durch die Wahl von $k$ und $T$ geht jeder Stützpunkt auf einzigartige Weise in die Kurve ein. $T$ kann entweder uniform (die $t_j$ sind äquidistant) oder nicht uniform gewählt werden. Jede der beiden Arten kann offen (Anfang und Ende von $T$ bestehen jeweils aus $k$-mal dem kleinsten bzw. größten $t_j$) oder periodsich (es ergeben sich periodische Gewichtungspolynome, die durch einfaches Verschieben auseinander hervorgehen) sein.

Der Knotenvektor wird häufig wie folgt gewählt für $0 \leq j \leq n+k$:

\begin{displaymath}
t_{j}= \left\{ \begin{array}{ll}
0& \mbox{ falls } j < k\\
...
... \leq n\\
n - k + 2 & \mbox{ falls } j > n
\end{array}\right.
\end{displaymath}

Hierdurch wird $t$ im Intervall $[0,n-k+2]$ definiert.

Beispiel: $k=3$, $n=4$ ergibt einen offenen uniformen quadratischen B-Spline mit dem Knotenvektor $T=(0,0,0,1,2,3,3,3)$. Die Stützpunkte $P_{0}, P_{1}, P_{2}, P_{3}, P_{4}$ haben nur lokal Einfluß auf den Kurvenverlauf, und zwar in den Intervallen $ t \in [0,1], [0,2], [0,3], [1,3], [2,3]$.


Abbildung 7.5: Verlauf der Gewichtungspolynome $N_{i,k}$ für $k=3$

Sonderfall

Für $k = n+1$ ergibt sich für den Knotenvektor der Sonderfall

\begin{displaymath}
T = (\underbrace{0, ... , 0}_{k \hbox{ \scriptsize mal}}, \underbrace{1, ... , 1}_{k \hbox{ \scriptsize mal}}).
\end{displaymath}

Die zugehörigen B-Splinefunktionen haben die schon bekannte Form

\begin{eqnarray*}
N_{i,k} (t) = \frac{(k-1)!}{i!\cdot (k-1-i)!} \cdot t^{i} \cdot
(1-t)^{k-1-i}, ~ i = 0, ... , k-1
\end{eqnarray*}



Somit lassen sich also die B-Splinefunktionen als Verallgemeinerung der Bernsteinpolynome auffassen.

Wie bei den Bernsteinpolynomen gilt auch für die B-Splinefunktionen $N_{i,k}$, daß sie positiv sind, und $\sum_{i=0}^{n}N_{i,k} = 1.$


Abbildung 7.6: B-Spline mit $n=6$, $k=4$ und 35 Interpolationspunkten



Unterabschnitte
prev up inhalt next