Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Kubisch Hermitescher Spline – Wikipedia
Kubisch Hermitescher Spline – Wikipedia 👆 Click Here!
aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Catmull-Rom-Spline)

In dem mathematischen Teilgebiet der Numerik wird unter einem kubisch hermiteschen Spline (auch cSpline genannt) ein Spline verstanden, der zwischen n + 1 {\displaystyle n+1} {\displaystyle n+1} Kontrollpunkten interpoliert. Die Kontrollpunkte sind durch n {\displaystyle n} {\displaystyle n} Segmente verbunden, die aus kubischen Polynomen bestehen, die stetig differenzierbar ineinander übergehen. Dies bedeutet, dass eine Teilkurve genau da aufhört, wo die nächste beginnt, und darüber hinaus an der Segmentgrenze die beiden Tangenten in ihrer Richtung übereinstimmen, wodurch sich ein weicher Übergang (ohne Knick) von Segment zu Segment ergibt. Die einzelnen Teilkurven sind durch Anfangs- und Endpunkt sowie den eingehenden und den ausgehenden Tangentenvektor eindeutig bestimmt.

Besonders verbreitet ist diese Splinedefinition in Programmen der Computeranimation, um zwischen einzelnen Keyframes, die auch unterschiedliche zeitliche Abstände voneinander haben können, zu interpolieren. Neben den kubischen Splines existieren auch noch Splines mit höherer oder niedrigerer Ordnung. Allerdings werden niedrigere Ordnungen als zu unflexibel eingestuft und höhere Ordnungen als zu aufwändig zu implementieren. Insbesondere tendieren Splines höherer Ordnung zu „Überschwingern“, was den Animator durch ungewollte Abläufe bei seiner Arbeit stören könnte. Hinzu kommt die effektive Möglichkeit, die Tangenten berechnen und beeinflussen zu können, wie es zum Beispiel beim später behandelten Kochanek-Bartels-Spline der Fall ist. Ebenso steht die Definition eines Segments dieses Splines in enger Verwandtschaft zur kubischen Bézierkurve, sodass beide ineinander überführt werden können. Dadurch ist es möglich, die Algorithmen für Bézierkurven (z. B. den De-Casteljau-Algorithmus) auch zur Berechnung und Darstellung von kubisch hermiteschen Splines zu verwenden.

Kubisch hermitescher Spline bestehend aus zwei Segmenten zwischen den Kontrollpunkten p 0 {\displaystyle p_{0}} {\displaystyle p_{0}}, p 1 {\displaystyle p_{1}} {\displaystyle p_{1}} und p 2 {\displaystyle p_{2}} {\displaystyle p_{2}}. Es ist ersichtlich, dass sich zwei Segmente jeweils einen gemeinsamen Kontrollpunkt teilen und ihre Tangentenvektoren dieselbe Richtung besitzen.

Zusammensetzung des Splines aus Polynomfunktionen

[Bearbeiten | Quelltext bearbeiten]

Seien n + 1 {\displaystyle n+1} {\displaystyle n+1} Kontrollpunkte mit p 0 , … , p n ∈ R N {\displaystyle p_{0},\dots ,p_{n}\in \mathbb {R} ^{N}} {\displaystyle p_{0},\dots ,p_{n}\in \mathbb {R} ^{N}} sowie Tangenten m 0 , … , m n ∈ R N {\displaystyle m_{0},\dots ,m_{n}\in \mathbb {R} ^{N}} {\displaystyle m_{0},\dots ,m_{n}\in \mathbb {R} ^{N}} vorgegeben. Eine differenzierbare Funktion s : [ x 0 , x n ] → R N {\displaystyle s\colon [x_{0},x_{n}]\to \mathbb {R} ^{N}} {\displaystyle s\colon [x_{0},x_{n}]\to \mathbb {R} ^{N}}, für die es reelle Zahlen x 0 < ⋯ < x n {\displaystyle x_{0}<\dots <x_{n}} {\displaystyle x_{0}<\dots <x_{n}} gibt, so dass

  • s ( x k ) = p k {\displaystyle s(x_{k})=p_{k}} {\displaystyle s(x_{k})=p_{k}} und s ′ ( x k ) = m k {\displaystyle s'(x_{k})=m_{k}} {\displaystyle s'(x_{k})=m_{k}} für k = 0 , … , n {\displaystyle k=0,\dots ,n} {\displaystyle k=0,\dots ,n}
  • die Einschränkung y k = s [ x k , x k + 1 ] {\displaystyle y_{k}=s_{[x_{k},x_{k+1}]}} {\displaystyle y_{k}=s_{[x_{k},x_{k+1}]}} ist ein Polynom vom Grad 3 für k = 0 , … , n − 1 {\displaystyle k=0,\dots ,n-1} {\displaystyle k=0,\dots ,n-1}

heißt ein kubischer Hermite-Spline.

Übersetzt auf die Polynome y k {\displaystyle y_{k}} {\displaystyle y_{k}} ergeben sich die Bedingungen

  • y k ( x k ) = p k {\displaystyle y_{k}(x_{k})=p_{k}} {\displaystyle y_{k}(x_{k})=p_{k}} und y k ( x k + 1 ) = p k + 1 {\displaystyle y_{k}(x_{k+1})=p_{k+1}} {\displaystyle y_{k}(x_{k+1})=p_{k+1}} und
  • y k ′ ( x k ) = m k {\displaystyle y_{k}'(x_{k})=m_{k}} {\displaystyle y_{k}'(x_{k})=m_{k}} und y k ′ ( x k + 1 ) = m k + 1 {\displaystyle y_{k}'(x_{k+1})=m_{k+1}} {\displaystyle y_{k}'(x_{k+1})=m_{k+1}}

jeweils für k = 0 , … , n − 1 {\displaystyle k=0,\dots ,n-1} {\displaystyle k=0,\dots ,n-1}.

Damit wird die zusammengesetzte Funktion automatisch wohldefiniert und stetig differenzierbar.

Es gibt genau eine Funktion s {\displaystyle s} {\displaystyle s} mit oben genannten Bedingungen. Äquivalent dazu ist, dass es genau einen entsprechenden Satz von Polynomen y 0 , … , y n − 1 {\displaystyle y_{0},\dots ,y_{n-1}} {\displaystyle y_{0},\dots ,y_{n-1}} gibt.

In Matrixdarstellung gilt

y k ( x )   =   T M h B k   =   [ t 3 ( x ) t 2 ( x ) t ( x ) 1 ] [ 2 − 2 1 1 − 3 3 − 2 − 1 0 0 1 0 1 0 0 0 ] [ p k p k + 1 m k d k m k + 1 d k ] mit   x ∈ [ x k , x k + 1 ] {\displaystyle y_{k}(x)\ =\ T\,M_{h}\,B_{k}\ =\ {\begin{bmatrix}t^{3}(x)&t^{2}(x)&t(x)&1\end{bmatrix}}{\begin{bmatrix}2&-2&1&1\\-3&3&-2&-1\\0&0&1&0\\1&0&0&0\end{bmatrix}}{\begin{bmatrix}p_{k}\\p_{k+1}\\m_{k}d_{k}\\m_{k+1}d_{k}\end{bmatrix}}\qquad {\text{mit}}\ x\in [x_{k},x_{k+1}]} {\displaystyle y_{k}(x)\ =\ T\,M_{h}\,B_{k}\ =\ {\begin{bmatrix}t^{3}(x)&t^{2}(x)&t(x)&1\end{bmatrix}}{\begin{bmatrix}2&-2&1&1\\-3&3&-2&-1\\0&0&1&0\\1&0&0&0\end{bmatrix}}{\begin{bmatrix}p_{k}\\p_{k+1}\\m_{k}d_{k}\\m_{k+1}d_{k}\end{bmatrix}}\qquad {\text{mit}}\ x\in [x_{k},x_{k+1}]}

mit d k = x k + 1 − x k {\displaystyle d_{k}=x_{k+1}-x_{k}} {\displaystyle d_{k}=x_{k+1}-x_{k}} und

t : [ x k , x k + 1 ] → [ 0 , 1 ] t = t k ( x ) = ( x − x k ) / d k {\displaystyle {\begin{aligned}t\colon [x_{k},x_{k+1}]&\to [0,1]\\t=t_{k}(x)&=(x-x_{k})/d_{k}\end{aligned}}} {\displaystyle {\begin{aligned}t\colon [x_{k},x_{k+1}]&\to [0,1]\\t=t_{k}(x)&=(x-x_{k})/d_{k}\end{aligned}}}

M h {\displaystyle M_{h}} {\displaystyle M_{h}} wird dabei als hermitesche Matrix bezeichnet.

Daraus ergibt sich durch die Rechengänge ( T M h ) B k {\displaystyle (T\,M_{h})\,B_{k}} {\displaystyle (T\,M_{h})\,B_{k}} bzw. von   T ( M h B k ) {\displaystyle \ T\,(M_{h}\,B_{k})} {\displaystyle \ T\,(M_{h}\,B_{k})} folgende matrixfreie Darstellungen:

y k ( t )   =   ( 2 p k − 2 p k + 1 + m k d k + m k + 1 d k ) t 3 + ( − 3 p k + 3 p k + 1 − 2 m k d k − m k + 1 d k ) t 2 + m k d k t + p k   =   ( 2 t 3 − 3 t 2 + 1 ) ⏟ h 00 p k + ( − 2 t 3 + 3 t 2 ) ⏟ h 10 p k + 1 + ( t 3 − 2 t 2 + t ) ⏟ h 01 m k d k + ( t 3 − t 2 ) ⏟ h 11 m k + 1 d k mit   t ∈ [ 0 , 1 ] {\displaystyle {\begin{aligned}y_{k}(t)\ &=\ (2p_{k}-2p_{k+1}+m_{k}d_{k}+m_{k+1}d_{k})t^{3}+(-3p_{k}+3p_{k+1}-2m_{k}d_{k}-m_{k+1}d_{k})t^{2}+m_{k}d_{k}t+p_{k}\\\ &=\ \underbrace {(2t^{3}-3t^{2}+1)} _{h_{00}}p_{k}+\underbrace {(-2t^{3}+3t^{2})} _{h_{10}}p_{k+1}+\underbrace {(t^{3}-2t^{2}+t)} _{h_{01}}m_{k}d_{k}+\underbrace {(t^{3}-t^{2})} _{h_{11}}m_{k+1}d_{k}\qquad {\text{mit}}\ t\in [0,1]\end{aligned}}} {\displaystyle {\begin{aligned}y_{k}(t)\ &=\ (2p_{k}-2p_{k+1}+m_{k}d_{k}+m_{k+1}d_{k})t^{3}+(-3p_{k}+3p_{k+1}-2m_{k}d_{k}-m_{k+1}d_{k})t^{2}+m_{k}d_{k}t+p_{k}\\\ &=\ \underbrace {(2t^{3}-3t^{2}+1)} _{h_{00}}p_{k}+\underbrace {(-2t^{3}+3t^{2})} _{h_{10}}p_{k+1}+\underbrace {(t^{3}-2t^{2}+t)} _{h_{01}}m_{k}d_{k}+\underbrace {(t^{3}-t^{2})} _{h_{11}}m_{k+1}d_{k}\qquad {\text{mit}}\ t\in [0,1]\end{aligned}}}

Algorithmisch ist der erste zu bevorzugen, wenn abschnittweise ausgewertet werden soll.

Es gibt Anwendungen, in denen man auf eine geschlossene Funktion s {\displaystyle s} {\displaystyle s} verzichtet und nur die Polynome y k {\displaystyle y_{k}} {\displaystyle y_{k}} betrachtet. Dann brauchen die Definitionsbereiche nicht aneinander anzuschließen, und man kann als Definitionsbereich immer [ 0 , 1 ] {\displaystyle [0,1]} {\displaystyle [0,1]} annehmen. Dadurch ist immer d k = 1 {\displaystyle d_{k}=1} {\displaystyle d_{k}=1} und die Funktion t k {\displaystyle t_{k}} {\displaystyle t_{k}} ist trivial.

Manchmal ist auch die Ableitung noch interessant. Sie ist

y k ′ ( x )   =   T ′ M h B   =   1 d k [ 3 t 2 ( x ) 2 t ( x ) 1 0 ] [ 2 − 2 1 1 − 3 3 − 2 − 1 0 0 1 0 1 0 0 0 ] [ p k p k + 1 m k d k m k + 1 d k ] {\displaystyle y_{k}'(x)\ =\ T'\,M_{h}\,B\ =\ {\frac {1}{d_{k}}}{\begin{bmatrix}3t^{2}(x)&2t(x)&1&0\end{bmatrix}}{\begin{bmatrix}2&-2&1&1\\-3&3&-2&-1\\0&0&1&0\\1&0&0&0\end{bmatrix}}{\begin{bmatrix}p_{k}\\p_{k+1}\\m_{k}d_{k}\\m_{k+1}d_{k}\end{bmatrix}}} {\displaystyle y_{k}'(x)\ =\ T'\,M_{h}\,B\ =\ {\frac {1}{d_{k}}}{\begin{bmatrix}3t^{2}(x)&2t(x)&1&0\end{bmatrix}}{\begin{bmatrix}2&-2&1&1\\-3&3&-2&-1\\0&0&1&0\\1&0&0&0\end{bmatrix}}{\begin{bmatrix}p_{k}\\p_{k+1}\\m_{k}d_{k}\\m_{k+1}d_{k}\end{bmatrix}}}

oder äquivalent

y k ′ ( x )   =   T 3 M h ′ B   =   1 d k [ t 2 ( x ) t ( x ) 1 ] [ 6 − 6 3 3 − 6 6 − 4 − 2 0 0 1 0 ] [ p k p k + 1 m k d k m k + 1 d k ] {\displaystyle y_{k}'(x)\ =\ T_{3}\,M_{h}'\,B\ =\ {\frac {1}{d_{k}}}{\begin{bmatrix}t^{2}(x)&t(x)&1\end{bmatrix}}{\begin{bmatrix}6&-6&3&3\\-6&6&-4&-2\\0&0&1&0\end{bmatrix}}{\begin{bmatrix}p_{k}\\p_{k+1}\\m_{k}d_{k}\\m_{k+1}d_{k}\end{bmatrix}}} {\displaystyle y_{k}'(x)\ =\ T_{3}\,M_{h}'\,B\ =\ {\frac {1}{d_{k}}}{\begin{bmatrix}t^{2}(x)&t(x)&1\end{bmatrix}}{\begin{bmatrix}6&-6&3&3\\-6&6&-4&-2\\0&0&1&0\end{bmatrix}}{\begin{bmatrix}p_{k}\\p_{k+1}\\m_{k}d_{k}\\m_{k+1}d_{k}\end{bmatrix}}}

Polynomiale Funktionen auf den Abschnitten

[Bearbeiten | Quelltext bearbeiten]

Herleitung

[Bearbeiten | Quelltext bearbeiten]

Wir betrachten erst den Spezialfall [ x 0 , x 1 ] = [ 0 , 1 ] {\displaystyle [x_{0},x_{1}]=[0,1]} {\displaystyle [x_{0},x_{1}]=[0,1]}.

Die gesuchte Funktion y 0 {\displaystyle y_{0}} {\displaystyle y_{0}} soll ein Polynom dritten Grades sein, das sich allgemein als y 0 ( t ) = a t 3 + b t 2 + c t + d {\displaystyle y_{0}(t)=at^{3}+bt^{2}+ct+d} {\displaystyle y_{0}(t)=at^{3}+bt^{2}+ct+d} darstellen lässt, oder in Matrixschreibweise:

y 0 ( t ) = [ t 3 t 2 t 1 ] [ a b c d ] = T C y 0 ′ ( t )   =   [ 3 t 2 2 t 1 0 ] C = T ′ C {\displaystyle {\begin{aligned}y_{0}(t)&={\begin{bmatrix}t^{3}&t^{2}&t&1\end{bmatrix}}{\begin{bmatrix}a\\b\\c\\d\end{bmatrix}}=TC\\y_{0}'(t)\ &=\ {\begin{bmatrix}3t^{2}&2t&1&0\end{bmatrix}}C=T'C\\\end{aligned}}} {\displaystyle {\begin{aligned}y_{0}(t)&={\begin{bmatrix}t^{3}&t^{2}&t&1\end{bmatrix}}{\begin{bmatrix}a\\b\\c\\d\end{bmatrix}}=TC\\y_{0}'(t)\ &=\ {\begin{bmatrix}3t^{2}&2t&1&0\end{bmatrix}}C=T'C\\\end{aligned}}}

Die Randbedingungen an y 0 {\displaystyle y_{0}} {\displaystyle y_{0}} sind

y 0 ( 0 )   =   p 0   =   [ 0 0 0 1 ] C y 0 ( 1 )   =   p 1   =   [ 1 1 1 1 ] C y 0 ′ ( 0 )   =   m 0   =   [ 0 0 1 0 ] C y 0 ′ ( 1 )   =   m 1   =   [ 3 2 1 0 ] C {\displaystyle {\begin{aligned}y_{0}(0)\ &=\ p_{0}\ =\ {\begin{bmatrix}0&0&0&1\end{bmatrix}}C\\y_{0}(1)\ &=\ p_{1}\ =\ {\begin{bmatrix}1&1&1&1\end{bmatrix}}C\\y_{0}'(0)\ &=\ m_{0}\ =\ {\begin{bmatrix}0&0&1&0\end{bmatrix}}C\\y_{0}'(1)\ &=\ m_{1}\ =\ {\begin{bmatrix}3&2&1&0\end{bmatrix}}C\end{aligned}}} {\displaystyle {\begin{aligned}y_{0}(0)\ &=\ p_{0}\ =\ {\begin{bmatrix}0&0&0&1\end{bmatrix}}C\\y_{0}(1)\ &=\ p_{1}\ =\ {\begin{bmatrix}1&1&1&1\end{bmatrix}}C\\y_{0}'(0)\ &=\ m_{0}\ =\ {\begin{bmatrix}0&0&1&0\end{bmatrix}}C\\y_{0}'(1)\ &=\ m_{1}\ =\ {\begin{bmatrix}3&2&1&0\end{bmatrix}}C\end{aligned}}}

oder als einzelne Matrixgleichung geschrieben

[ p 0 p 1 m 0 m 1 ] = [ 0 0 0 1 1 1 1 1 0 0 1 0 3 2 1 0 ] ⏟ A C {\displaystyle {\begin{bmatrix}p_{0}\\p_{1}\\m_{0}\\m_{1}\end{bmatrix}}=\underbrace {\begin{bmatrix}0&0&0&1\\1&1&1&1\\0&0&1&0\\3&2&1&0\end{bmatrix}} _{A}C} {\displaystyle {\begin{bmatrix}p_{0}\\p_{1}\\m_{0}\\m_{1}\end{bmatrix}}=\underbrace {\begin{bmatrix}0&0&0&1\\1&1&1&1\\0&0&1&0\\3&2&1&0\end{bmatrix}} _{A}C}

Im Spezialfall [ x 0 , x 1 ] = [ 0 , 1 ] {\displaystyle [x_{0},x_{1}]=[0,1]} {\displaystyle [x_{0},x_{1}]=[0,1]} gilt d k = x k + 1 − x k = 1 {\displaystyle d_{k}=x_{k+1}-x_{k}=1} {\displaystyle d_{k}=x_{k+1}-x_{k}=1} und somit ist die linke Seite einfach B k {\displaystyle B_{k}} {\displaystyle B_{k}}. Nun kann die Gleichung durch Multiplikation mit der Inversen M h = A − 1 {\displaystyle M_{h}=A^{-1}} {\displaystyle M_{h}=A^{-1}} nach C {\displaystyle C} {\displaystyle C} aufgelöst werden.

C   =   M h B k   =   [ 2 − 2 1 1 − 3 3 − 2 − 1 0 0 1 0 1 0 0 0 ] [ p 0 p 1 m 0 m 1 ] {\displaystyle C\ =\ M_{h}B_{k}\ =\ {\begin{bmatrix}2&-2&1&1\\-3&3&-2&-1\\0&0&1&0\\1&0&0&0\end{bmatrix}}{\begin{bmatrix}p_{0}\\p_{1}\\m_{0}\\m_{1}\end{bmatrix}}} {\displaystyle C\ =\ M_{h}B_{k}\ =\ {\begin{bmatrix}2&-2&1&1\\-3&3&-2&-1\\0&0&1&0\\1&0&0&0\end{bmatrix}}{\begin{bmatrix}p_{0}\\p_{1}\\m_{0}\\m_{1}\end{bmatrix}}}

Eingesetzt in den Ansatz y 0 ( t ) = T C {\displaystyle y_{0}(t)=TC} {\displaystyle y_{0}(t)=TC} ergibt sich die behauptete Existenz und Eindeutigkeit y 0 ( t ) = T M h B 0 {\displaystyle y_{0}(t)=TM_{h}B_{0}} {\displaystyle y_{0}(t)=TM_{h}B_{0}} für den betrachteten Spezialfall.

Für ein allgemeines Segment [ x 0 , x 1 ] {\displaystyle [x_{0},x_{1}]} {\displaystyle [x_{0},x_{1}]} betrachten wir die Funktion

t : [ x 0 , x 1 ] → [ 0 , 1 ] t = t k ( x ) = ( x − x 0 ) / d 0 {\displaystyle {\begin{aligned}t\colon [x_{0},x_{1}]&\to [0,1]\\t=t_{k}(x)&=(x-x_{0})/d_{0}\end{aligned}}} {\displaystyle {\begin{aligned}t\colon [x_{0},x_{1}]&\to [0,1]\\t=t_{k}(x)&=(x-x_{0})/d_{0}\end{aligned}}}

und benennen die für den Spezialfall [ x 0 , x 1 ] = [ 0 , 1 ] {\displaystyle [x_{0},x_{1}]=[0,1]} {\displaystyle [x_{0},x_{1}]=[0,1]} ermittelte Funktion y 0 {\displaystyle y_{0}} {\displaystyle y_{0}} in y ~ 0 {\displaystyle {\tilde {y}}_{0}} {\displaystyle {\tilde {y}}_{0}} um. Dann hat eine polynomiale Funktion auf dem allgemeinen Intervall [ x 0 , x 1 ] {\displaystyle [x_{0},x_{1}]} {\displaystyle [x_{0},x_{1}]} die Form

y 0 ( x ) = y ~ 0 ∘ t ( x ) = T M h B ~ 0 = T M h [ p ~ 0 p ~ 1 m ~ 0 m ~ 1 ] = T M h [ p 0 p 1 m 0 d 0 m 1 d 0 ] . {\displaystyle y_{0}(x)={\tilde {y}}_{0}\circ t(x)=TM_{h}{\tilde {B}}_{0}=TM_{h}{\begin{bmatrix}{\tilde {p}}_{0}\\{\tilde {p}}_{1}\\{\tilde {m}}_{0}\\{\tilde {m}}_{1}\end{bmatrix}}=TM_{h}{\begin{bmatrix}p_{0}\\p_{1}\\m_{0}d_{0}\\m_{1}d_{0}\end{bmatrix}}.} {\displaystyle y_{0}(x)={\tilde {y}}_{0}\circ t(x)=TM_{h}{\tilde {B}}_{0}=TM_{h}{\begin{bmatrix}{\tilde {p}}_{0}\\{\tilde {p}}_{1}\\{\tilde {m}}_{0}\\{\tilde {m}}_{1}\end{bmatrix}}=TM_{h}{\begin{bmatrix}p_{0}\\p_{1}\\m_{0}d_{0}\\m_{1}d_{0}\end{bmatrix}}.}

Es bleibt, die letzte Gleichheit zu zeigen. Offensichtlich gelten p 0 = y 0 ( x 0 ) = y ~ 0 ( 0 ) = p ~ 0 {\displaystyle p_{0}=y_{0}(x_{0})={\tilde {y}}_{0}(0)={\tilde {p}}_{0}} {\displaystyle p_{0}=y_{0}(x_{0})={\tilde {y}}_{0}(0)={\tilde {p}}_{0}} und p 1 = y 0 ( x 1 ) = y ~ 0 ( 1 ) = p ~ 1 {\displaystyle p_{1}=y_{0}(x_{1})={\tilde {y}}_{0}(1)={\tilde {p}}_{1}} {\displaystyle p_{1}=y_{0}(x_{1})={\tilde {y}}_{0}(1)={\tilde {p}}_{1}}. Für die Ableitung gilt

y 0 ′ ( x ) = y ~ 0 ′ ( t ( x ) ) t ′ ( x ) = y ~ 0 ′ ( t ( x ) ) d 0 {\displaystyle y_{0}'(x)={\tilde {y}}_{0}'(t(x))\,t'(x)={\frac {{\tilde {y}}_{0}'(t(x))}{d_{0}}}} {\displaystyle y_{0}'(x)={\tilde {y}}_{0}'(t(x))\,t'(x)={\frac {{\tilde {y}}_{0}'(t(x))}{d_{0}}}}

und damit m 0 = y 0 ( x 0 ) = y ~ 0 ′ ( 0 ) d 0 = m ~ 0 d 0 {\displaystyle m_{0}=y_{0}(x_{0})={\frac {{\tilde {y}}_{0}'(0)}{d_{0}}}={\frac {{\tilde {m}}_{0}}{d_{0}}}} {\displaystyle m_{0}=y_{0}(x_{0})={\frac {{\tilde {y}}_{0}'(0)}{d_{0}}}={\frac {{\tilde {m}}_{0}}{d_{0}}}} sowie analog m 1 = y 0 ( x 1 ) = m ~ 1 d 0 {\displaystyle m_{1}=y_{0}(x_{1})={\frac {{\tilde {m}}_{1}}{d_{0}}}} {\displaystyle m_{1}=y_{0}(x_{1})={\frac {{\tilde {m}}_{1}}{d_{0}}}}.

Damit ist die Existenz und Eindeutigkeit für k = 0 {\displaystyle k=0} {\displaystyle k=0} gezeigt. Die Argumente gelten aber natürlich unabhängig vom Index.[1]

Darstellungen und Verwandtschaft

[Bearbeiten | Quelltext bearbeiten]
Plot der hermiteschen Basisfunktionen.

Die hermiteschen Basisfunktionen h 00 , h 01 , h 10 , h 11 {\displaystyle h_{00},h_{01},h_{10},h_{11}} {\displaystyle h_{00},h_{01},h_{10},h_{11}} lassen sich auf unterschiedliche Weise darstellen, wodurch sich jeweils direkt verschiedene Eigenschaften der Kurvensegmente ablesen lassen.

Darstellung h 00 ( t ) {\displaystyle {\boldsymbol {h_{00}(t)}}} {\displaystyle {\boldsymbol {h_{00}(t)}}} h 01 ( t ) {\displaystyle {\boldsymbol {h_{01}(t)}}} {\displaystyle {\boldsymbol {h_{01}(t)}}} h 10 ( t ) {\displaystyle {\boldsymbol {h_{10}(t)}}} {\displaystyle {\boldsymbol {h_{10}(t)}}} h 11 ( t ) {\displaystyle {\boldsymbol {h_{11}(t)}}} {\displaystyle {\boldsymbol {h_{11}(t)}}}
expandiert 2 t 3 − 3 t 2 + 1 {\displaystyle 2t^{3}-3t^{2}+1} {\displaystyle 2t^{3}-3t^{2}+1} t 3 − 2 t 2 + t {\displaystyle t^{3}-2t^{2}+t} {\displaystyle t^{3}-2t^{2}+t} − 2 t 3 + 3 t 2 {\displaystyle -2t^{3}+3t^{2}} {\displaystyle -2t^{3}+3t^{2}} t 3 − t 2 {\displaystyle t^{3}-t^{2}} {\displaystyle t^{3}-t^{2}}
faktorisiert ( 1 + 2 t ) ( 1 − t ) 2 {\displaystyle (1+2t)(1-t)^{2}} {\displaystyle (1+2t)(1-t)^{2}} t ( 1 − t ) 2 {\displaystyle t(1-t)^{2}} {\displaystyle t(1-t)^{2}} t 2 ( 3 − 2 t ) {\displaystyle t^{2}(3-2t)} {\displaystyle t^{2}(3-2t)} t 2 ( t − 1 ) {\displaystyle t^{2}(t-1)} {\displaystyle t^{2}(t-1)}
Bernstein B 0 ( t ) + B 1 ( t ) {\displaystyle B_{0}(t)+B_{1}(t)} {\displaystyle B_{0}(t)+B_{1}(t)} 1 3 B 1 ( t ) {\displaystyle {\frac {1}{3}}B_{1}(t)} {\displaystyle {\frac {1}{3}}B_{1}(t)} B 2 ( t ) + B 3 ( t ) {\displaystyle B_{2}(t)+B_{3}(t)} {\displaystyle B_{2}(t)+B_{3}(t)} − 1 3 B 2 ( t ) {\displaystyle -{\frac {1}{3}}B_{2}(t)} {\displaystyle -{\frac {1}{3}}B_{2}(t)}

Die expandierte Form lässt sich direkt aus der Herleitung gewinnen und wird üblicherweise, wie auch hier, zur Definition benutzt.

Es ist direkt an der Faktorisierung ersichtlich, dass h 00 {\displaystyle h_{00}} {\displaystyle h_{00}} bei t = 1 {\displaystyle t=1} {\displaystyle t=1} eine Nullstelle besitzt und der Anstieg gleich 0 {\displaystyle 0} {\displaystyle 0} ist. Selbiges gilt für h 10 {\displaystyle h_{10}} {\displaystyle h_{10}} für t = 0 {\displaystyle t=0} {\displaystyle t=0}. h 01 {\displaystyle h_{01}} {\displaystyle h_{01}} und h 11 {\displaystyle h_{11}} {\displaystyle h_{11}} besitzen hingegen eine Multiplizität von 2 und besitzen jeweils am Ende und Anfang des Definitionsbereichs von t {\displaystyle t} {\displaystyle t} eine Nullstelle.

Bei der Betrachtung der Bernsteinpolynome der 3. Ordnung B k ( t ) = ( 3 k ) t k ( 1 − t ) 3 − k {\displaystyle B_{k}(t)={3 \choose k}t^{k}(1-t)^{3-k}} {\displaystyle B_{k}(t)={3 \choose k}t^{k}(1-t)^{3-k}} wird die Analogie zur kubischen Bézierkurve ersichtlich, deren Bernsteinpolynome B 0 ( t ) {\displaystyle B_{0}(t)} {\displaystyle B_{0}(t)}, B 1 ( t ) {\displaystyle B_{1}(t)} {\displaystyle B_{1}(t)}, B 2 ( t ) {\displaystyle B_{2}(t)} {\displaystyle B_{2}(t)} und B 3 ( t ) {\displaystyle B_{3}(t)} {\displaystyle B_{3}(t)} sind. Entsprechend existiert eine direkte Verbindung zwischen beiden Gleichungen, aus der sich die folgenden Zusammenhänge ergeben,

P 0   =   p 0 , P 1   =   p 0 + m 0 3 , P 2   =   p 1 − m 1 3 , P 3   =   p 1 , {\displaystyle {\begin{aligned}P_{0}\ &=\ p_{0},\\P_{1}\ &=\ p_{0}+{\frac {m_{0}}{3}},\\P_{2}\ &=\ p_{1}-{\frac {m_{1}}{3}},\\P_{3}\ &=\ p_{1},\end{aligned}}} {\displaystyle {\begin{aligned}P_{0}\ &=\ p_{0},\\P_{1}\ &=\ p_{0}+{\frac {m_{0}}{3}},\\P_{2}\ &=\ p_{1}-{\frac {m_{1}}{3}},\\P_{3}\ &=\ p_{1},\end{aligned}}}

wenn die Bézierkurve wie folgt definiert ist:

C ( t )   =   ( 1 − t ) 3 P 0 + 3 t ( 1 − t ) 2 P 1 + 3 t 2 ( 1 − t ) P 2 + t 3 P 3   {\displaystyle {\begin{aligned}C(t)\ &=\ (1-t)^{3}P_{0}+3t(1-t)^{2}P_{1}+3t^{2}(1-t)P_{2}+t^{3}P_{3}\ \end{aligned}}} {\displaystyle {\begin{aligned}C(t)\ &=\ (1-t)^{3}P_{0}+3t(1-t)^{2}P_{1}+3t^{2}(1-t)P_{2}+t^{3}P_{3}\ \end{aligned}}}.

Durch diesen Zusammenhang kann der De-Casteljau-Algorithmus zu Berechnung von Interpolationen mittels kubisch hermitescher Splines benutzt werden. Ebenso ist ersichtlich, dass bei einer kubischen Bézierkurve die mittleren Kontrollpunkte die Richtung der Tangente an den Endpunkten definieren.

Eindeutigkeit

[Bearbeiten | Quelltext bearbeiten]

Die Definition des Segments garantiert, dass der Pfad zwischen zwei Punkten eindeutig ist. Damit ist gemeint, dass es kein zweites von c ( t ) {\displaystyle c(t)} {\displaystyle c(t)} verschiedenes Polynom q ( x ) {\displaystyle q(x)} {\displaystyle q(x)} gefunden werden kann, das den gleichen Verlauf besitzt.

Anschauliches Verhalten

[Bearbeiten | Quelltext bearbeiten]

Während die Richtung jedes Tangentenvektors m → i {\displaystyle {\vec {m}}_{i}} {\displaystyle {\vec {m}}_{i}} angibt, in welche Richtung die Kurve den zugehörigen Punkt p i {\displaystyle p_{i}} {\displaystyle p_{i}} verlässt oder erreicht, beschreibt der Betrag (die „Länge“) jedes Tangentenvektors, wie stark sein Einfluss auf den Kurvenverlauf ist: Von der Richtung eines kurzen Vektors kann die Kurve schnell abschwenken, von der Richtung eines langen Vektors kann sie sich nur langsam lösen.

Ist unerheblich, in welche Richtung der Spline einen Punkt verlässt, so kann der zugehörige Tangentenvektor auf 0 → {\displaystyle {\vec {0}}} {\displaystyle {\vec {0}}} gesetzt werden.

Interpolation

[Bearbeiten | Quelltext bearbeiten]

Das Schema des segmentweise aufgebauten kubisch hermiteschen Splines kann benutzt werden, um für einen Datensatz mit den Kontrollpunkten ( x k , p k ) {\displaystyle (x_{k},p_{k})} {\displaystyle (x_{k},p_{k})} für k = 1 , … , n {\displaystyle k=1,\ldots ,n} {\displaystyle k=1,\ldots ,n} eine Kurve zu definieren, die durch die Kontrollpunkte verläuft und deren Tangenten derart gewählt werden, dass sich ein weicher Übergang zwischen den Segmenten ergibt. Dies bedeutet, dass die Tangenten aneinandergrenzender Segmente in ihrem gemeinsamen Punkt gleich sind. Die so interpolierte Kurve besteht dann aus stückweise differenzierbaren Segmenten und ist selbst im Bereich ( x 1 , x n ) {\displaystyle (x_{1},x_{n})} {\displaystyle (x_{1},x_{n})} stetig differenzierbar.

Die Wahl der Tangenten ist hingegen nicht eindeutig, sodass sich verschiedene Bestimmungsverfahren mit unterschiedlichen Ergebnissen etabliert haben.

Finite-Differenz

[Bearbeiten | Quelltext bearbeiten]

Die einfachste Methode zur Wahl der Tangenten (Anstieg im eindimensionalen Fall) ist die Verwendung der finiten Differenz. Mit ihr lassen sich die Tangenten für ein Segment im Einheitsintervall und k = 2 , … , n − 1 {\displaystyle k=2,\ldots ,n-1} {\displaystyle k=2,\ldots ,n-1} wie folgt berechnen:

m k   =   p k − p k − 1 2 + p k + 1 − p k 2 {\displaystyle m_{k}\ =\ {\frac {p_{k}-p_{k-1}}{2}}+{\frac {p_{k+1}-p_{k}}{2}}} {\displaystyle m_{k}\ =\ {\frac {p_{k}-p_{k-1}}{2}}+{\frac {p_{k+1}-p_{k}}{2}}}

Für Endpunkte ( k = 0 {\displaystyle k=0} {\displaystyle k=0} und k = n {\displaystyle k=n} {\displaystyle k=n}) wird entweder die einseitige Differenz verwendet, was effektiv einer Verdoppelung des Anfangs- und Endpunktes entspricht. Alternativ wird ein Vorgänger p − 1 {\displaystyle p_{-1}} {\displaystyle p_{-1}} und Nachfolger p n + 1 {\displaystyle p_{n+1}} {\displaystyle p_{n+1}} geschätzt, wofür es verschiedene Ansätze gibt.

Catmull-Rom-Spline

[Bearbeiten | Quelltext bearbeiten]
Tangente vom Catmull-Rom-Spline bei unterschiedlichem Faktor T 1 {\displaystyle T_{1}} {\displaystyle T_{1}}

Fasst man obige Gleichung zusammen, multipliziert sie mit 2 {\displaystyle 2} {\displaystyle 2} und definiert einen Faktor T k {\displaystyle T_{k}} {\displaystyle T_{k}}, erhält man das Catmull-Rom-Spline.

m k   =   T k ( p k + 1 − p k − 1 )   mit   T k ∈ [ 0 , ∞ ) (Einheitsintervall) m k   =   T k p k + 1 − p k − 1 x k + 1 − x k − 1   mit   T k ∈ [ 0 , ∞ ) (Werteintervall) {\displaystyle {\begin{aligned}{m}_{k}\ &=\ T_{k}(p_{k+1}-p_{k-1})\ {\text{mit}}\ T_{k}\in [0,\infty )\qquad &{\text{(Einheitsintervall)}}\\{m}_{k}\ &=\ T_{k}{\frac {p_{k+1}-p_{k-1}}{x_{k+1}-x_{k-1}}}\ {\text{mit}}\ T_{k}\in [0,\infty )\qquad &{\text{(Werteintervall)}}\end{aligned}}} {\displaystyle {\begin{aligned}{m}_{k}\ &=\ T_{k}(p_{k+1}-p_{k-1})\ {\text{mit}}\ T_{k}\in [0,\infty )\qquad &{\text{(Einheitsintervall)}}\\{m}_{k}\ &=\ T_{k}{\frac {p_{k+1}-p_{k-1}}{x_{k+1}-x_{k-1}}}\ {\text{mit}}\ T_{k}\in [0,\infty )\qquad &{\text{(Werteintervall)}}\end{aligned}}}

Aus dem Teilstück p k + 1 − p k − 1 {\displaystyle p_{k+1}-p_{k-1}} {\displaystyle p_{k+1}-p_{k-1}} der Gleichung ist ersichtlich, dass die Tangente sich an der Richtung des Vektors von p k − 1 {\displaystyle p_{k-1}} {\displaystyle p_{k-1}} nach p k + 1 {\displaystyle p_{k+1}} {\displaystyle p_{k+1}} orientiert. Der Parameter T k {\displaystyle T_{k}} {\displaystyle T_{k}} skaliert unterdessen diesen Vektor, sodass das Kurvensegment weiter oder schärfer wird. Häufig wird dieser Parameter fest auf 0 , 5 {\displaystyle 0{,}5} {\displaystyle 0{,}5} gesetzt, womit sich wieder die Ausgangsgleichung ergibt.

Benannt ist diese Kurve nach Edwin Catmull und Raphael Rom. In der Computergrafik wird diese Form häufig genutzt um zwischen Schlüsselbildern (Keyframes) zu interpolieren oder grafische Objekte darzustellen. Sie sind hauptsächlich wegen ihrer einfachen Berechnung verbreitet und erfüllen die Bedingung, dass jedes Schlüsselbild exakt erreicht wird, während die Bewegung sich weich und ohne Sprünge von Segment zu Segment fortsetzt. Dabei ist zu beachten, dass durch die Änderung eines Kontrollpunktes sich über die Bestimmung der benachbarten Tangenten insgesamt vier Kurvensegmente verändern.[2]

Cardinal Spline

[Bearbeiten | Quelltext bearbeiten]

Ein Cardinal Spline ergibt sich, wenn die Tangenten wie folgt bestimmt werden:[3][4]

m k   =   1 − c k 2 ( p k + 1 − p k − 1 )   mit   c k ∈ [ − 1 , 1 ] (Einheitsintervall) m k   =   1 − c k 2 p k + 1 − p k − 1 x k + 1 − x k − 1   mit   c k ∈ [ − 1 , 1 ] (Werteintervall) {\displaystyle {\begin{aligned}m_{k}\ &=\ {\frac {1-c_{k}}{2}}(p_{k+1}-p_{k-1})\ {\text{mit}}\ c_{k}\in [-1,1]\qquad &{\text{(Einheitsintervall)}}\\m_{k}\ &=\ {\frac {1-c_{k}}{2}}{\frac {p_{k+1}-p_{k-1}}{x_{k+1}-x_{k-1}}}\ {\text{mit}}\ c_{k}\in [-1,1]\qquad &{\text{(Werteintervall)}}\end{aligned}}} {\displaystyle {\begin{aligned}m_{k}\ &=\ {\frac {1-c_{k}}{2}}(p_{k+1}-p_{k-1})\ {\text{mit}}\ c_{k}\in [-1,1]\qquad &{\text{(Einheitsintervall)}}\\m_{k}\ &=\ {\frac {1-c_{k}}{2}}{\frac {p_{k+1}-p_{k-1}}{x_{k+1}-x_{k-1}}}\ {\text{mit}}\ c_{k}\in [-1,1]\qquad &{\text{(Werteintervall)}}\end{aligned}}}

Der Parameter c {\displaystyle c} {\displaystyle c} wird dabei als Spannung der Kurve verstanden und muss im Intervall von [ − 1 , 1 ] {\displaystyle [-1,1]} {\displaystyle [-1,1]} liegen. Anschaulich betrachtet, bestimmt der Parameter die „Länge der Tangenten“, wobei c = 1 {\displaystyle c=1} {\displaystyle c=1} bedeutet, dass sie keine Länge besitzen, c = − 1 {\displaystyle c=-1} {\displaystyle c=-1} führt zu doppelt so langen Tangenten, was einen sehr weichen Durchlauf durch den Kontrollpunkt nach sich zieht.

Kochanek-Bartels-Spline

[Bearbeiten | Quelltext bearbeiten]
Einfluss von Tension, Continuity und Bias auf die Wahl der Tangenten und den Kurvenverlauf

Das Kochanek-Bartels-Spline (auch TCB-Spline genannt) ist eine weitere Generalisierung für die Wahl der Tangenten, die sich durch die Parameter Tension, Continuity und Bias beeinflussen lässt. Sie wurden 1984 von Doris H. U. Kochanek und Richard H. Bartels eingeführt, um Anwendern bei der Keyframe-Animation eine größere Kontrolle über den Verlauf der Interpolation zu geben. Bekannt wurden sie durch Anwendungen wie 3ds Max von Discreet oder LightWave 3D von NewTek.[2]

Als Grundlage für die Kochanek-Bartels-Splines dient der C 0 {\displaystyle C^{0}} {\displaystyle C^{0}}-stetige hermitesche Spline, der links- und rechtsseitige Tangenten ( m k − {\displaystyle m_{k}^{-}} {\displaystyle m_{k}^{-}} und m k + {\displaystyle m_{k}^{+}} {\displaystyle m_{k}^{+}}) an einem Kontrollpunkt p k {\displaystyle p_{k}} {\displaystyle p_{k}} erlaubt.[2][5][6]

Tension

[Bearbeiten | Quelltext bearbeiten]

Der Tension-Parameter T k {\displaystyle T_{k}} {\displaystyle T_{k}} ist mit dem c {\displaystyle c} {\displaystyle c}-Parameter vom Cardinal Spline vergleichbar und beeinflusst gleichermaßen die Länge der Tangenten am Kontrollpunkt. In Analogie zur Tangentenrichtung des Catmull-Rom-Spline ergibt sich:

m k −   =   m k +   =   1 − T k 2 ( p k − p k − 1 ) + 1 − T k 2 ( p k + 1 − p k )   mit   T k ∈ [ − 1 , 1 ] {\displaystyle m_{k}^{-}\ =\ m_{k}^{+}\ =\ {\frac {1-T_{k}}{2}}(p_{k}-p_{k-1})+{\frac {1-T_{k}}{2}}(p_{k+1}-p_{k})\ {\text{mit}}\ T_{k}\in [-1,1]} {\displaystyle m_{k}^{-}\ =\ m_{k}^{+}\ =\ {\frac {1-T_{k}}{2}}(p_{k}-p_{k-1})+{\frac {1-T_{k}}{2}}(p_{k+1}-p_{k})\ {\text{mit}}\ T_{k}\in [-1,1]}

Für negative Werte durchläuft die Kurve in weitem Bogen den Kontrollpunkt, während sie sich für positive stark zusammenzieht. Im Falle von T k = 1 {\displaystyle T_{k}=1} {\displaystyle T_{k}=1} besitzen die Tangenten eine Länge von 0 {\displaystyle 0} {\displaystyle 0}, wodurch ein scharfer aber dennoch C 1 {\displaystyle C^{1}} {\displaystyle C^{1}}-stetiger Knick entsteht. Bei T k = − 1 {\displaystyle T_{k}=-1} {\displaystyle T_{k}=-1} ist die Tangente doppelt so lang wie bei T k = 0 {\displaystyle T_{k}=0} {\displaystyle T_{k}=0} was einen weit verlaufenden Bogen durch den Kontrollpunkt ergibt.

Continuity

[Bearbeiten | Quelltext bearbeiten]

Der Continuity-Parameter C k {\displaystyle C_{k}} {\displaystyle C_{k}} lässt die Tangenten in ihrer Richtung auseinandergehen. Entsprechend wirkt der Parameter unterschiedlich auf die links- und rechtsseitige Tangente:

m k −   =   1 − C k 2 ( p k − p k − 1 ) + 1 + C k 2 ( p k + 1 − p k )   , m k +   =   1 + C k 2 ( p k − p k − 1 ) + 1 − C k 2 ( p k + 1 − p k )   mit   C k ∈ [ − 1 , 1 ] {\displaystyle {\begin{aligned}m_{k}^{-}\ &=\ {\frac {1-C_{k}}{2}}(p_{k}-p_{k-1})+{\frac {1+C_{k}}{2}}(p_{k+1}-p_{k})\ ,\\m_{k}^{+}\ &=\ {\frac {1+C_{k}}{2}}(p_{k}-p_{k-1})+{\frac {1-C_{k}}{2}}(p_{k+1}-p_{k})\ {\text{mit}}\ C_{k}\in [-1,1]\end{aligned}}} {\displaystyle {\begin{aligned}m_{k}^{-}\ &=\ {\frac {1-C_{k}}{2}}(p_{k}-p_{k-1})+{\frac {1+C_{k}}{2}}(p_{k+1}-p_{k})\ ,\\m_{k}^{+}\ &=\ {\frac {1+C_{k}}{2}}(p_{k}-p_{k-1})+{\frac {1-C_{k}}{2}}(p_{k+1}-p_{k})\ {\text{mit}}\ C_{k}\in [-1,1]\end{aligned}}}

Für Werte von C k ≠ 0 {\displaystyle C_{k}\neq 0} {\displaystyle C_{k}\neq 0} ist der Spline nicht mehr C 1 {\displaystyle C^{1}} {\displaystyle C^{1}}-stetig. Die Kurve zeigt Ecken die mit zunehmenden | c k | {\displaystyle |c_{k}|} {\displaystyle |c_{k}|} schärfer werden. Das Vorzeichen definiert unterdessen, ob die Ecke nach „außen“ oder „innen“ zeigt.

Bias

[Bearbeiten | Quelltext bearbeiten]

Der Bias-Parameter B k {\displaystyle B_{k}} {\displaystyle B_{k}} bestimmt welches Segment einen stärkeren Einfluss auf die Tangente besitzt. Entsprechend rotiert die gemeinsame Tangente in Richtung des Gewichts.

m k −   =   m k +   =   1 + B k 2 ( p k − p k − 1 ) + 1 − B k 2 ( p k + 1 − p k )   mit   B k ∈ [ − 1 , 1 ] {\displaystyle m_{k}^{-}\ =\ m_{k}^{+}\ =\ {\frac {1+B_{k}}{2}}(p_{k}-p_{k-1})+{\frac {1-B_{k}}{2}}(p_{k+1}-p_{k})\ {\text{mit}}\ B_{k}\in [-1,1]} {\displaystyle m_{k}^{-}\ =\ m_{k}^{+}\ =\ {\frac {1+B_{k}}{2}}(p_{k}-p_{k-1})+{\frac {1-B_{k}}{2}}(p_{k+1}-p_{k})\ {\text{mit}}\ B_{k}\in [-1,1]}

Zusammenfassung zu TCB

[Bearbeiten | Quelltext bearbeiten]

Fasst man die gewonnenen Eigenschaften für die Tangenten zusammen, erhält man folgende Gleichungen für die eingehende und ausgehende Tangente von p k {\displaystyle p_{k}} {\displaystyle p_{k}}:

Einheitsintervall
m k −   =   ( 1 − T k ) ( 1 − C k ) ( 1 + B k ) 2 ( p k − p k − 1 ) + ( 1 − T k ) ( 1 + C k ) ( 1 − B k ) 2 ( p k + 1 − p k )   , m k +   =   ( 1 − T k ) ( 1 + C k ) ( 1 + B k ) 2 ( p k − p k − 1 ) + ( 1 − T k ) ( 1 − C k ) ( 1 − B k ) 2 ( p k + 1 − p k )   mit   T k , C k , B k ∈ [ − 1 , 1 ] {\displaystyle {\begin{aligned}m_{k}^{-}\ &=\ {\frac {(1-T_{k})(1-C_{k})(1+B_{k})}{2}}(p_{k}-p_{k-1})+{\frac {(1-T_{k})(1+C_{k})(1-B_{k})}{2}}(p_{k+1}-p_{k})\ ,\\m_{k}^{+}\ &=\ {\frac {(1-T_{k})(1+C_{k})(1+B_{k})}{2}}(p_{k}-p_{k-1})+{\frac {(1-T_{k})(1-C_{k})(1-B_{k})}{2}}(p_{k+1}-p_{k})\ {\text{mit}}\ T_{k},C_{k},B_{k}\in [-1,1]\end{aligned}}} {\displaystyle {\begin{aligned}m_{k}^{-}\ &=\ {\frac {(1-T_{k})(1-C_{k})(1+B_{k})}{2}}(p_{k}-p_{k-1})+{\frac {(1-T_{k})(1+C_{k})(1-B_{k})}{2}}(p_{k+1}-p_{k})\ ,\\m_{k}^{+}\ &=\ {\frac {(1-T_{k})(1+C_{k})(1+B_{k})}{2}}(p_{k}-p_{k-1})+{\frac {(1-T_{k})(1-C_{k})(1-B_{k})}{2}}(p_{k+1}-p_{k})\ {\text{mit}}\ T_{k},C_{k},B_{k}\in [-1,1]\end{aligned}}}
Werteintervall
m k −   =   ( 1 − T k ) ( 1 − C k ) ( 1 + B k ) 2 p k − p k − 1 x k − x k − 1 + ( 1 − T k ) ( 1 + C k ) ( 1 − B k ) 2 p k + 1 − p k x k + 1 − x k   , m k +   =   ( 1 − T k ) ( 1 + C k ) ( 1 + B k ) 2 p k − p k − 1 x k − x k − 1 + ( 1 − T k ) ( 1 − C k ) ( 1 − B k ) 2 p k + 1 − p k x k + 1 − x k   mit   T k , C k , B k ∈ [ − 1 , 1 ] {\displaystyle {\begin{aligned}m_{k}^{-}\ &=\ {\frac {(1-T_{k})(1-C_{k})(1+B_{k})}{2}}{\frac {p_{k}-p_{k-1}}{x_{k}-x_{k-1}}}+{\frac {(1-T_{k})(1+C_{k})(1-B_{k})}{2}}{\frac {p_{k+1}-p_{k}}{x_{k+1}-x_{k}}}\ ,\\m_{k}^{+}\ &=\ {\frac {(1-T_{k})(1+C_{k})(1+B_{k})}{2}}{\frac {p_{k}-p_{k-1}}{x_{k}-x_{k-1}}}+{\frac {(1-T_{k})(1-C_{k})(1-B_{k})}{2}}{\frac {p_{k+1}-p_{k}}{x_{k+1}-x_{k}}}\ {\text{mit}}\ T_{k},C_{k},B_{k}\in [-1,1]\end{aligned}}} {\displaystyle {\begin{aligned}m_{k}^{-}\ &=\ {\frac {(1-T_{k})(1-C_{k})(1+B_{k})}{2}}{\frac {p_{k}-p_{k-1}}{x_{k}-x_{k-1}}}+{\frac {(1-T_{k})(1+C_{k})(1-B_{k})}{2}}{\frac {p_{k+1}-p_{k}}{x_{k+1}-x_{k}}}\ ,\\m_{k}^{+}\ &=\ {\frac {(1-T_{k})(1+C_{k})(1+B_{k})}{2}}{\frac {p_{k}-p_{k-1}}{x_{k}-x_{k-1}}}+{\frac {(1-T_{k})(1-C_{k})(1-B_{k})}{2}}{\frac {p_{k+1}-p_{k}}{x_{k+1}-x_{k}}}\ {\text{mit}}\ T_{k},C_{k},B_{k}\in [-1,1]\end{aligned}}}

Literatur

[Bearbeiten | Quelltext bearbeiten]
  • I. J. Schoenberg: Cardinal Spline Interpolation. Nr. 12. SIAM (Society for Industrial and Applied Mathematics), 1987, ISBN 0-89871-009-X. 
  • Michael Bender, Manfred Brill: Computergrafik: Ein anwendungsorientiertes Lehrbuch. Nr. 2. Hanser Verlag, 2005, ISBN 3-446-40434-1. 
  • David Salomon: Curves and surfaces for computer graphics. Springer, 2006, ISBN 0-387-24196-5. 

Weblinks

[Bearbeiten | Quelltext bearbeiten]
  • Donald H. House: Spline Curves (PDF; 5,4 MB). Clemson University (englisch).
  • Chandrajit Bajaj: Multi-dimensional Hermite Interpolation and Approximation (PDF; 207 kB). Purdue University (englisch).

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ G. Scott Owen: Hermite Splines. Sisgraph, 2. September 1999, abgerufen am 1. November 2010 (englisch). 
  2. ↑ a b c Michael Bender, Manfred Brill: Computergrafik: Ein anwendungsorientiertes Lehrbuch. Nr. 2. Hanser Verlag, 2005, ISBN 3-446-40434-1, S. 139 ff. 
  3. ↑ I. J. Schoenberg: Cardinal Spline Interpolation. Nr. 12. SIAM (Society for Industrial and Applied Mathematics), 1987, ISBN 0-89871-009-X, S. 33 ff. 
  4. ↑ David Salomon: Curves and surfaces for computer graphics. Springer, 2006, ISBN 0-387-24196-5, S. 161 ff. 
  5. ↑ David Salomon: Curves and surfaces for computer graphics. Springer, 2006, ISBN 0-387-24196-5, S. 167 ff. 
  6. ↑ David Eberly: Kochanek-Bartels Cubic Splines (TCB Splines). Geometric Tools, LLC, 14. Februar 2008, archiviert vom Original (nicht mehr online verfügbar) am 13. April 2014; abgerufen am 1. November 2010 (englisch). 
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Kubisch_Hermitescher_Spline&oldid=257306752#Catmull-Rom-Spline“
Kategorien:
  • Geometrische Modellierung
  • Numerische Mathematik
  • Mathematische Funktion

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id