FAKULT ¨ AT F ¨ UR INFORMATIK
DER TECHNISCHEN UNIVERSIT ¨ AT M ¨ UNCHEN
Interdisziplin¨ares Projekt
Glatte Kurven aus diskreten Punkten
Carlos Camino
FAKULT ¨ AT F ¨ UR INFORMATIK
DER TECHNISCHEN UNIVERSIT ¨ AT M ¨ UNCHEN
Interdisziplin¨ares Projekt
Glatte Kurven aus diskreten Punkten
Verfasser: Carlos Camino
Aufgabensteller: Prof. Dr. Dr. J ¨urgen Richter-Gebert Betreuer: Dipl.Inf. Martin von Gagern
Datum: 17. Oktober 2013
Inhaltsverzeichnis
1. Einleitung 1
1.1. WriteBird . . . . 1
1.2. Problemstellung . . . . 2
2. Mathematische Grundlagen 3 2.1. Parametrisierte Kurven . . . . 3
2.2. Bernsteinpolynome . . . . 5
2.3. B´ezierkurven . . . . 7
2.4. B-Spline-Basisfunktionen . . . . 9
2.5. B-Splines . . . . 13
3. Wichtige Eigenschaften von B-Splines 17 3.1. Mehrfachknoten und eingespannte B-Splines . . . . 17
3.2. Zusammenhang zwischen B´ezierkurven und B-Splines . . . . 20
3.3. Einf ¨ugen von B-Spline-Knoten . . . . 22
3.4. Konsequenzen der Lokalit¨atseigenschaft . . . . 23
4. Echtzeitbearbeitung der Daten 27 4.1. Hintergrund . . . . 27
4.1.1. Chord-Length-Parametrisierung . . . . 28
4.1.2. Event-Time-Parametrisierung. . . . 28
4.2. Implementierung mit win- und bsp-Variablen . . . . 28
4.2.1. Die Methode processControlPoint . . . . 29
4.2.2. Die Methode finishStroke . . . . 30
5. L ¨oschen von Kontrollpunkten 33 5.1. Hintergrund . . . . 33
5.1.1. Allgemeine L ¨osung . . . . 34
5.1.2. Hilfsvariablen . . . . 35
5.1.3. Diskrete Approximationen . . . . 36
5.2. Implementierung mit aux -Variablen . . . . 36
5.2.1. Die Methode computeAuxiliaryVariables . . . . 37
5.2.2. Die Methode removeKnots . . . . 38
6. Darstellung als B´ezierkurven 41 6.1. Hintergrund . . . . 41
6.1.1. Multiplizit¨atserh ¨ohung . . . . 41
6.1.2. Aufteilen von B-Splines . . . . 44
Inhaltsverzeichnis
6.1.3. Uberf ¨uhrung zu B´ezierkurven . . . . ¨ 45
6.2. Implementierung mit net- und rem-Variablen . . . . 46
6.2.1. Die Methode generateBezierControlPoints . . . . 47
6.2.2. Die Methode deBoor . . . . 48
6.2.3. Die Methode extractBezierControlPoints . . . . 48
6.2.4. Die Methode extractRemainingControlPoints . . . . 49
6.2.5. Die Methode extractLastBezierControlPoints . . . . 49
7. Ergebnisse und Ausblick 51 7.1. Bestimmung der Parameter . . . . 51
7.1.1. Die maximale ¨ Anderung der Kurve . . . . 51
7.1.2. Die Kapazit¨at des Fensters . . . . 52
7.1.3. Die Ordnung des B-Splines . . . . 52
7.1.4. Die Wahl der diskreten Norm . . . . 53
7.1.5. Parametrisierung der Knoten . . . . 54
7.2. M ¨ogliche Folgearbeiten . . . . 55
A. Log-Dateien 59 A.1. Einf ¨ugen von Knoten in das Fenster . . . . 61
A.2. Bewegen des Fensters . . . . 65
A.3. Einf ¨ugen des letzten Knoten . . . . 69
A.4. Berechnen von Hilfsvariablen im Fenster . . . . 72
A.5. L ¨oschen von Knoten . . . . 75
A.6. Generieren von B´ezierkurven . . . . 78
Literaturverzeichnis 81
1. Einleitung
D
ASzentrale Thema dieser Arbeit ist das effiziente Gl¨atten von handgezeichneten Kurven. Dies beinhaltet das Einlesen, die Bearbeitung und die graphische Dar- stellung von Daten, die mithilfe eines Eingabeger¨ats produziert werden. Dabei wird der Verlauf der Maus oder eines speziellen Stiftes ¨uber eine, mit Sensoren versehene, Zeichenfl¨ache verfolgt und in Form von Punkten gespeichert. Die gespeicherten Punk- te werden von der Software durch Kurven verbunden, so dass sie den Verlauf der Maus bzw. des Stiftes ¨ahneln. Beispiele f ¨ur solche Eingabeger¨ate sind Tablets, Zeichenpads und elektronische Tafeln.
Die Einsatzbereiche f ¨ur solche Verfahren sind sehr vielf¨altig. Einerseits sind sie in indus- triellen Softwares zu finden, die als Hilfsmittel f ¨ur das technische Zeichnen oder sogar f ¨ur das rechnerunterst ¨utzte Konstruieren von Bauteilen eingesetzt werden. Beispiele hierf ¨ur sind CAD-Programme. Der Fachbereich, in dem solche Verfahren studiert werden, ist un- ter dem Namen Computer Aided Geometric Design (CAGD) bekannt. Andererseits sind sie auch in Applikationen zu finden, die von Privatnutzern benutzt werden, meistens um No- tizen von Hand zu machen, die dann in elektronischer Form gespeichert werden k ¨onnen.
Gegenstand dieser Arbeit wird ein solches Programm sein, namens WriteBird.
1.1. WriteBird
WriteBird ist eine Software f ¨ur elektronische Tafeln, die es erlaubt Tafelinhalte im Portable Document Format (PDF) zu exportieren. Sie arbeitet vektororientiert und wurde von Mar- tin von Gagern in Java implementiert. Die aktuelle Version des Programms generiert die erw ¨unschten Kurven, indem sie benachbarte Punkte durch gerade Segmente, sogenannte Polygonz ¨uge, verbindet. Diese Methode kann aus folgenden Gr ¨unden vorteilhaft sein:
• Sie ist leicht zu implementieren.
• Der Rechenaufwand ist minimal, weil die eingelesenen Daten nicht ver¨andert wer- den.
• Die Abweichung zwischen der von dem Nutzer gezeichneten Kurve und der von der Software generierten Zeichnung kann minimiert, werden, wenn der Abstand zwischen den gespeicherten Punkten sehr klein ist.
Nat ¨urlich ist eine solche L ¨osung eng mit Nachteilen verbunden:
• Das entstehende Bild ist nicht immer glatt. In bestimmten F¨allen, beispielsweise bei
sehr schnell gezeichneten Linien, kann es dazu kommen, dass die Abst¨ande zwi-
1. Einleitung
schen den Punkten zu groß sind. Dadurch k ¨onnen unerw ¨unschte Ecken im Bild ent- stehen.
• Ist der Abstand zwischen den Punkten sehr klein, so sieht die Kurve zwar glatt aus, aber h¨atte eine erh ¨ohte Menge an ben ¨otigtem Speicherplatz zur Folge.
• Die Aufnahme der Punkte wird immer durch das Eingabeger¨at technisch bedingt sein. So kann es passieren, dass die Sensoren nicht akkurat sind und so ein verzerrtes Bild mit unerw ¨unschten Zacken entsteht.
1.2. Problemstellung
Im Rahmen dieses Projekts soll ein optimierter Ansatz f ¨ur die Darstellung von Kurven f ¨ur WriteBird implementiert werden. Insbesondere soll die Methode in Java implementiert und in das bestehende WriteBird-Projekt eingebaut werden.
Reduzierte Datenmenge. Die Ausgabe des Programms soll platzsparend sein. Das heißt, dass die Anzahl an gespeicherten Punkten minimiert werden soll. Dabei soll, nat ¨urlich, so wenig an Informationen ¨uber die urspr ¨ungliche Kurve verloren gehen. Die Abweichung zwischen der urspr ¨unglichen und der entstehenden Kurve soll also minimal sein.
Effiziente Berechnung. Zudem soll das Programm so implementiert sein, dass die Be- rechnung der neuen Kurve effizient ist. Der Rechenaufwand sollte also so verteilt werden, dass der Benutzer beim Zeichnen der Kurve keine Verz ¨ogerung erkennt. Das heißt insbe- sondere, dass das Programm jederzeit in der Lage sein soll neue Daten aufzunehmen und dass sich die Bearbeitung dieser nicht anstaut.
Asthetische Darstellung. ¨ Schließlich soll die entstehende Kurve glatt sein. So soll nat ¨urlich
aussehen und darf keine unerw ¨unschten Ecken oder Unstetigkeiten besitzen, selbst wenn
der Benutzer das entstehende Bild beliebig oft vergr ¨oßert.
2. Mathematische Grundlagen
D
IEManipulation von Kurven und Fl¨achen ist ein Teil der geometrischen Datenver- arbeitung (von engl. Computer Aided Geometric Design, kurz CAGD). Die in dieser Disziplin entwickelten Methoden bilden die Grundlagen f ¨ur die graphische Da- tenverarbeitung und sind somit ein wichtiger Bestandteil dieser Arbeit. In diesem Kapitel werden parametrisierte Kurven diskutiert und wir werden insbesondere auf zwei Arten solcher Kurven eingehen: Die B´ezierkurven und die B-Splines. Diese werden sowohl for- mal als auch informal beschrieben werden und zum besseren Verst¨andnis werden diese Beschreibungen mit zahlreichen Beispielen und graphischen Darstellungen erg¨anzt. F ¨ur dieses Kapitel wurden folgende Quellen zu Rate gezogen: [3, 6, 11].
2.1. Parametrisierte Kurven
Parametrisierte Kurven liefern uns eine M ¨oglichkeit die (d-dimensionalen) Punkte X ∈ R
deiner Kurve in Abh¨angigkeit eines Parameters t zu beschreiben.
Definition 2.1 (Parametrisierte Kurven)
Sei I ⊆ R ein Intervall (geschlossen, offen oder halboffen), t ∈ I und f
1, . . . , f
d: I → R Funktio- nen. Eine Punktemenge C = {X(t) | t ∈ I} ⊆ R
dmit
X(t) =
Ö
f
1(t) .. . f
d(t)
è
nennt man parametrisierte Kurve.
Intuitiv beschreiben die Funktionen f
1, . . . , f
dden zeitlichen Verlauf der einzelnen Koor- dinaten der Kurve innerhalb des Zeitintervalls I . Man nennt zweidimensionale Kurven ebene Kurven und dreidimensionale Raumkurven.
Beispiel 2.2 (Ebene Kurve)
Die Kurve C = {X(t) | t ∈ [0, 4]} mit
X(t) =
Ç
(t − 1)
2(4 − t) + 1 t(t − 2)
2(4 − t) + 1
å
stellt eine parametrisierte Kurve mit d = 2 dar. Ihr Verlauf ist in Abbildung 2.1 abgebildet.
2. Mathematische Grundlagen
x
1x
20 5
0 5
Å5 1 ã Å1
4 ã
Å3 1 ã
Å5 4 ã
Å1 1 ã
Abbildung 2.1.: Kurvenverlauf der ebenen Kurve C aus Beispiel 2.2 mit eingezeichneten Punkten X(0) = (5, 1)
T, X(1) = (1, 4)
T, X(2) = (3, 1)
T, X(3) = (5, 4)
Tund X(4) = (1, 1)
T.
Man stelle sich vor, man w ¨urde die Kurve aus Beispiel 2.2 mit einem Bleistift auf ein Blatt Papier mithilfe eines x
1, x
2-Koordinatensystems zeichnen wollen. Man beginnt die Zeich- nung an dem Punkt X(0) = (5, 1)
T. Zu jedem Zeitpunkt t ∈ [0, 4] befindet sich die Spitze des Bleistiftes auf dem Punkt X(t) des Koordinatensystems. Setzt man f ¨ur t beispielsweise die Werte 0, 1, 2, 3 und 4 ein, so erh¨alt man die Punkte
Ç
5 1
å,
Ç1
4
å,
Ç3
1
å,
Ç5
4
å,
Ç1
1
å∈ C .
Diese findet man auf der Kurve in Abbildung 2.1 markiert. Nat ¨urlich ist hier der ¨ Ubergang von t = 0 zu t = 4 kontinuierlich, so das die Kurve nicht aus 5, sondern aus unendlich vielen Punkten besteht.
Beispiel 2.3 (Raumkurve)
Die Kurve C = {X(t) | t ∈ [0, 8π]} mit
X(t) =
Ö
cos(t) 2t/π sin(t)
è
stellt eine parametrisierte Kurve mit d = 3 dar. Ihr Verlauf ist in Abbildung 2.2 abgebildet.
Die Kurve aus 2.3 kann nicht mehr in eine Ebene gezeichnet werden. Sie muss im dreidi-
mensionalen euklidischen Raum eingebettet werden. Setzt man in diesem Fall die Werte
0,
12π, π,
32π, 2π f ¨ur t ein, so erh¨alt man folgende Punkte auf der Kurve:
2.2. Bernsteinpolynome
x
1x
2x
31
1
5 10 15
1 0 0
!
0 1 1
!
−1 2 0
!
0 3
−1
! 1
4 0
!
Abbildung 2.2.: Raumkurve C aus Beispiel 2.3 mit eingezeichneten Punkten X(0) = (1, 0, 0)
T, X
π2= (0, 1, 1)
T, X(π) = (−1, 2, 0)
T, X
Ä3π2 ä= (0, 3, −1)
Tund X(2π) = (1, 4, 0)
T.
Ö
1 0 0
è
,
Ö
0 1 1
è
,
Ö
−1 2 0
è
,
Ö
0 3
−1
è,
Ö1
4 0
è
∈ C .
Diese sind ebenfalls in Abbildung 2.2 eingezeichnet worden.
Die in den folgenden Abschnitten beschriebenen Klassen parametrisierter Kurven und die entsprechenden Verfahren funktionieren f ¨ur beliebige Dimensionen. Nichtsdestotrotz werden wir uns in den folgenden Beispielen und Abbildungen im auf den Fall d = 2 ein- schr¨anken, da nur dieser f ¨ur unser Vornehmen von Bedeutung ist.
2.2. Bernsteinpolynome
B´ezierkurven geh ¨oren wohl zu den wichtigsten Klassen parametrisierter Kurven. Sie wur- den Anfang der 1960er Jahre, unabh¨angig voneinander, von Pierre B´ezier und Paul de Casteljau entwickelt. Um diese zu verstehen, m ¨ussen zuerst die sogenannten Bernsteinpo- lynome verstanden werden.
Definition 2.4 (Bernsteinpolynome)
Sei n ∈ N
0und i ∈ {0, . . . , n}. Das i-te Bernsteinpolynom n-ten Grades hat die Gestalt
2. Mathematische Grundlagen
B
n,i(t) :=
Ç
n i
å· t
i· (1 − t)
n−i, wobei der Binomialkoeffizient
nidefiniert ist als:
Ç
n i
å:= n!
(n − i)! · i! = n · (n − 1) · . . . · (n − i + 1) i · (i − 1) · . . . · 1 . Wir zeigen diese Definition anhand eines Beispiels.
Beispiel 2.5 (Bernsteinpolynome)
Sei n = 5. Die sechs Bernsteinpolynome f ¨unften Grades lassen sich wie folgt berechnen:
B
5,0(t) =
50· t
0· (1 − t)
5−0= (1 − t)
5B
5,1(t) =
51· t
1· (1 − t)
5−1= 5t(1 − t)
4B
5,2(t) =
52· t
2· (1 − t)
5−2= 10t
2(1 − t)
3B
5,3(t) =
53· t
3· (1 − t)
5−3= 10t
3(1 − t)
2B
5,4(t) =
54· t
4· (1 − t)
5−4= 5t
4(1 − t) B
5,5(t) =
55· t
5· (1 − t)
5−5= t
5t
0 0, 2 0, 4 0, 6 0, 8 1
0 1
B5,0
B5,1
B5,2 B5,3
B5,4
B5,5
Abbildung 2.3.: Graphen der Bernsteinpolynome B
5,i(t) f ¨ur i = 0, 1, 2, 3, 4, 5 im Intervall [0, 1].
Bernsteinpolynome k ¨onnen zwar ¨uber beliebige Intervalle definiert werden, aber sie sind sie sind im Intervall [0, 1] besonders interessant. Hier besitzen sie wichtige Eigenschaften, die eine entscheidende Rolle bei der Konstruktion von B´ezierkurven spielen werden. Im Folgenden werden diese erl¨autert.
Nichtnegativit¨at und Positivit¨at. Es gilt B
n,i(t) ≥ 0 f ¨ur alle t ∈ [0, 1] und sogar B
n,i(t) >
0 f ¨ur alle t ∈ (0, 1). Beide Eigenschaften folgen direkt aus der Definition.
2.3. B´ezierkurven
Randpunkte. Am linken Rand des Intervalls hat das erste Bernsteinpolynom den Funk- tionswert 1 und alle anderen 0. Am rechten Rand des Intervalls hat entsprechend das n-te Bernsteinpolynom den Funktionswert 1 und alle anderen 0. Diese Eigenschaft folgt eben- falls direkt aus der Definition.
Zerlegung der Eins. Diese Eigenschaft besagt, dass die Summe aller n + 1 Bernsteinpo- lynome n-ten Grades unabh¨angig von t genau 1 ergibt. Diese Eigenschaft l¨asst sich sehr schnell mithilfe des binomischen Lehrsatzes zeigen:
n
X
i=0
B
N,i(t) =
n
X
i=0
Ç
n i
å· t
i· (1 − t)
n−i= (t + (1 − t))
n= 1
Hieraus folgt, mithilfe der Nichtnegativit¨at bzw. der Positivit¨at, dass B
n,i(t) ≤ 1 f ¨ur alle t ∈ [0, 1] bzw. B
n,i(t) < 1 f ¨ur alle t ∈ (0, 1) gilt.
Extrempunkte. Jedes Bernsteinpolynom besitzt im Intervall [0, 1] genau ein globales Ma- ximum. Dieses befindet sich an der Stelle t =
ni. F ¨ur die Bernsteinpolynome B
n,0(t) und B
n,n(t) ist dies trivialerweise erf ¨ullt. Es folgt n¨amlich, aus den oberen Eigenschaften, dass B
n,0(t) = 1 falls t = 0 gilt und sonst B
n,0(t) < 1. Analog gilt B
n,n(t) = 1 falls t = 1 und sonst B
n,n(t) < 1. F ¨ur die restlichen Polynome bildet man die erste Ableitung mithilfe der Produkt- und Kettenregel und setzt diese gleich Null. Man erh¨alt:
d
dt B
n,i(t) =
Çn
i
å· t
i−1· (1 − t)
n−i−1· (i − nt) = 0
!⇐⇒ t = 0, t = 1 oder t = i n Aus den obigen Eigenschaften folgt, dass t = 0 und t = 1 Minima sind und t =
nidas Maximum bildet.
In Abbildung 2.3 k ¨onnen alle vier Eigenschaften f ¨ur den Fall n = 5 erkannt werden.
2.3. B´ezierkurven
F ¨ur die Konstruktion von B´ezierkurven brauchen wir zus¨atzlich noch sogenannte Kontroll- punkte P
0, . . . , P
n∈ R
d. Diese werden mit den Bernsteinpolynomen B
n,0(t), . . . , B
n,n(t) gewichtet. Wir erhalten folgende Definition:
Definition 2.6 (B´ezierkurve)
Seien P
0, . . . , P
n∈ R
dbeliebige Punkte. Eine Kurve C = {X(t) | t ∈ [0, 1]} mit
X(t) =
n
X
i=0
B
n,i(t) · P
i2. Mathematische Grundlagen
heißt B´ezierkurve n-ten Grades.
Eine B´ezierkurve kann also eindeutig durch Kontrollpunkte bestimmt werden. Man nimmt in diesem Fall einfach die Anzahl der Punkte als n. Die Bernsteinpolynome werden dann eindeutig durch dieses n bestimmt.
B´ezierkurven gehen zwar nicht direkt durch die Kontrollpunkte, aber man kann mit die- sen sehr intuitiv den Verlauf der Kurve steuern. Hierzu kann man sich folgende Intuiti- on zu Hilfe nehmen: Man betrachtet die Kontrollpunkte als Magnete, die alle gleichzei- tig ein geladenes Teilchen anziehen. Die Anziehungskr¨afte dieser Magnete sind nicht alle gleich und jede einzelne variiert in Abh¨angigkeit von der Zeit t. Die Anziehungskraft des i-ten Magnets in Abh¨angigkeit von der Zeit t wird durch das Bernsteinpolynom B
n,i(t) beschrieben und seine Position durch den Kontrollpunkt P
i. Aufgrund der Maxima der Bernsteinpolynome ziehen die Magnete an unterschiedlichen Stellen des Intervalls [0, 1]
das Teilchen am st¨arksten: Der nullte Magnet zieht zum Zeitpunkt t = 0 am st¨arksten, der erste zum Zeitpunkt t =
1n, der zweite zum Zeitpunkt t =
n2, usw. Betrachtet man nun die Bewegung des geladenen Teilchens im Zeitintervall [0, 1] so w ¨urde dieser den Verlauf der Kurve beschreiben. Abbildung 2.4 soll die Rolle der Kontrollpunkte und ihren Einfluss auf eine Beispielskurve veranschaulichen.
P
0P
1P
2P
3P
4P
50
0,2 0,4 0,6 0,8
1
Abbildung 2.4.: Beispiel einer B´ezierkurve vom Grad n = 5 mit Kontrollpunkten P
0, . . . , P
5∈ R
2und eingezeichneten Punkten X(0), X(0, 2), X(0, 4), X(0, 6), X(0, 8) und X(1).
Wir halten zwei wichtige Beobachtungen fest, die Folgerungen aus den Eigenschaften von Bernsteinpolynomen sind.
Endpunkte. Aufgrund des Verhaltens von Bernsteinpolynomen an den Randpunkten t = 0 und t = 1 gehen B´ezierkurven immer durch den ersten und den letzten Kontroll- punkt. In Abbildung 2.4 sind dies die Punkte P
0und P
4.
Konvexe H ¨ulle. Die Kurve liegt innerhalb der konvexen H ¨ulle des Kontrollpolygons. Die-
ses ist das kleinste Polygon, welches alle Kontrollpunkte beinhaltet (siehe Abbildung 2.5).
2.4. B-Spline-Basisfunktionen
Diese Eigenschaft besitzen alle B´ezierkurven. Sie folgt aus der Nichtnegativit¨at der Bern- steinpolynome und aus der Eigenschaft, dass diese eine Zerlegung der Eins bilden. Diese Eigenschaft wird f ¨ur uns eine wichtige Rolle spielen. Deshalb wird diese in Abschnitt 3.4 wieder aufgegriffen und ihre geometrische Bedeutung n¨aher betrachtet.
P
0P
1P
2P
3P
4P
50
0,2 0,4 0,6 0,8
1
Abbildung 2.5.: B´ezierkurve aus Abbildung 2.4 mit eingezeichnetem Kontrollpolygon (grau).
2.4. B-Spline-Basisfunktionen
Bernsteinpolynome werden benutzt, um die Kontrollpunkte einer B´ezierkurve zu gewich- ten. B-Spline-Basisfunktionen erf ¨ullen bei den B-Splines dieselbe Aufgabe. Der Unterschied zu den Bernsteinpolynomen ist, dass das Intervall f ¨ur t die Form [t
0, t
m−1) f ¨ur beliebige t
0und t
m−1hat und in Subintervallen [t
0, t
1), [t
1, t
2), . . . , [t
m−2, t
m−1) aufgeteilt wird.
Definition 2.7 (B-Spline-Basisfunktionen)
F ¨ur einen gegebenen Vektor T = (t
0, t
1, . . . , t
m−1) der L¨ange m sind die B-Spline-Basisfunktionen rekursiv definiert:
N
i,k(t) =
I
[ti,ti+1)(t) falls k = 1
t−ti
ti+k−1−ti
· N
i,k−1(t) +
tti+k−ti+k−ti+1
· N
i+1,k−1(t) sonst I
[ti,ti+1)ist hierbei die ¨ubliche Indikatorfunktion. Es gilt:
I
[ti,ti+1)(t) =
(
1 falls t
i≤ t ≤ t
i+10 sonst
Die Zahlen t
0≤ t
1≤ . . . ≤ t
m−1werden Knoten genannt und T Knotenvektor. Die rekursi-
ve Definition von Basisfunktionen l¨asst sich sehr gut schematische als Netz darstellen. In
Abbildung 2.6 ist dieses Schema f ¨ur k = 1, . . . , 6 dargestellt.
2. Mathematische Grundlagen
[t
0, t
1) [t
1, t
2) [t
2, t
3) [t
3, t
4) [t
4, t
5) [t
5, t
6) N
0,1N
1,1N
2,1N
3,1N
4,1N
5,1N
0,2N
1,2N
2,2N
3,2N
4,2N
0,3N
1,3N
2,3N
3,3N
0,4N
1,4N
2,4N
0,5N
1,5N
0,6Abbildung 2.6.: Schematische Darstellung f ¨ur die Berechnung aller Basisfunktionen mit k ≤ 6.
Wir wollen die Definition der B-Spline-Basisfunktionen an einem kleinen Beispiel sehen.
Wir rechnen hier die ersten drei Ebenen der Basisfunktionen per Hand.
Beispiel 2.8 (B-Spline-Basisfunktionen)
Sei T = (0, 1, 2, 3, 4) ein Knotenvektor. Wir berechnen alle Basisfunktionen f ¨ur k = 1, k = 2 und k = 3. F ¨ur k = 1 erhalten wir:
[0, 1) [1, 2) [2, 3) [3, 4)
N
0,1(t) 1 0 0 0
N
1,1(t) 0 1 0 0
N
2,1(t) 0 0 1 0
N
3,1(t) 0 0 0 1
F ¨ur den Fall k = 2 betrachten wir die Berechnung von N
0,2(t). Wir erhalten:
N
0,2(t) = t − t
0t
1− t
0· N
0,1(t) + t
2− t t
2− t
1· N
1,1(t)
= t · N
0,1(t) + (2 − t) · N
1,1(t)
=
t falls t ∈ [0, 1) 2 − t falls t ∈ [1, 2)
0 sonst
Die Berechnung von N
1,2und N
2,2verl¨auft analog. Wir erhalten f ¨ur k = 2:
2.4. B-Spline-Basisfunktionen
[0, 1) [1, 2) [2, 3) [3, 4)
N
0,2(t) t 2 − t 0 0
N
1,2(t) 0 t − 1 3 − t 0
N
2,2(t) 0 0 t − 2 4 − t
F ¨ur den Fall k = 3 betrachten wir die Berechnung von N
0,3(t). Wir erhalten:
N
0,3(t) = t − t
0t
2− t
0· N
0,2(t) + t
3− t
t
3− t
1· N
1,2(t)
= t
2 · N
0,2(t) + 3 − t
2 · N
1,2(t)
=
1
2
t
2falls t ∈ [0, 1)
−
12(2t
2− 6t + 3) falls t ∈ [1, 2)
1
2
(t − 3)
2falls t ∈ [2, 3)
0 sonst
Analog erhalten wir f ¨ur N
1,3(t):
N
1,3(t) = t − t
1t
3− t
1· N
1,2(t) + t
4− t t
4− t
2· N
2,2(t)
= t − 1
2 · N
1,2(t) + 4 − t
2 · N
2,2(t)
=
1
2
(t − 1)
2falls t ∈ [1, 2)
−
12(2t
2− 10t + 11) falls t ∈ [2, 3)
1
2
(4 − t)
2falls t ∈ [3, 4)
0 sonst
Insgesamt erhalten wir f ¨ur k = 3:
[0, 1) [1, 2) [2, 3) [3, 4)
N
0,3(t)
12t
2−
12(2t
2− 6t + 3)
12(t − 3)
20 N
1,3(t) 0
12(t − 1)
2−
12(2t
2− 10t + 11)
12(4 − t)
2In Abbildung 2.7 sind die Kurven zu allen im Beispiel berechneten Basisfunktionen abge- bildet. Man beachte im Fall k = 3, dass beide Kurven aus jeweils drei miteinander verbun- denen Polynomen zweiten Grades bestehen. Allgemein besitzt eine B-Spline-Basisfunktion h ¨ochstens den Grad k − 1.
B-Spline-Basisfunktionen besitzen ¨ahnliche Eigenschaften wie die Bernsteinpolynome. Wir
betrachten nur die zwei wichtigsten.
2. Mathematische Grundlagen
t N
i,1(t)
0 1 2 3 4
0
1
N0,1 N1,1 N2,1 N3,1t N
i,2(t)
0 1 2 3 4
0
1
N0,2 N1,2 N2,2t N
i,3(t)
0 1 2 3 4
0
1
N0,3 N1,3
Abbildung 2.7.: Basisfunktionen N
i,kaus Beispiel 2.8 f ¨ur k = 1, 2, 3.
Nichtnegativit¨at und Positivit¨at. Betrachtet man wieder Abbildung 2.6 auf Seite 10, so kann man zwei wichtige Beobachtungen machen:
• Die Basisfunktion N
i,k(t) ist positiv im Intervall [t
i, t
i+k) und sonst Null.
• Im Intervall [t
i, t
i+1) sind h ¨ochstens k+1 Basisfunktionen auf der k-ten Ebene positiv.
Diese sind N
i−k+1,k(t), N
i−k+2,k(t), . . . , N
i,k(t) (falls sie alle existieren).
Zerlegung der Eins. Diese Aussage besagt, dass die Summe aller Basisfunktionen auf der k-ten Ebene in jedem Intervall [t
i, t
i+1) f ¨ur i = k − 1, . . . , m − k genau Eins ist. Formal:
∀i ∈ {k, . . . , m − k}, t ∈ [t
i−1, t
i) :
i
X
j=i−k+1
N
j,k(t) = 1 .
Der Beweis dieser Aussage wird vorgef ¨uhrt, weil der Leser von der G ¨ultigkeit der Aussage
¨uberzeugt sein sollte. Der Beweis erfolgt durch vollst¨andige Induktion ¨uber k. Weil der
Basisfall k = 1 trivial ist, wird nur der Induktionsschritt gezeigt:
2.5. B-Splines
i
X
j=i−(k+1)+1
N
j,k+1(t)
=
i
X
j=i−k
Ç
t − t
jt
j+k− t
j· N
j,k(t) + t
j+k+1− t t
j+k+1− t
j+1· N
j+1,k(t)
å=
i
X
j=i−k
Ç
t − t
jt
j+k− t
j· N
j,k(t)
å+
i+1
X
j=i−k+1
Ç
t
j+k− t
t
j+k− t
j· N
j,k(t)
å= t − t
i−kt
i− t
i−k· N
i−k,k(t)
| {z }
=0
+
i
X
j=i−k+1
Ç
t − t
jt
j+k− t
j+ t
j+k− t t
j+k− t
jå
| {z }
=1
·N
j,k(t) + t
i+k+1− t
t
i+k+1− t
i+1· N
i+1,k(t)
| {z }
=0
=
i
X
j=i−k+1
N
j,k(t) = 1
Man beachte, dass die Summe aller Basisfunktionen in der k-ten Ebene nur im Intervall [t
k−1, t
m−k) Eins ergibt. Im Allgemeinen ist dies in den Intervallen [t
0, t
k−1) und [t
m−k+1, t
m−1) nicht der Fall. Diese Aussage, zusammen mit der Nichtnegativit¨at und Positivit¨at von Ba- sisfunktionen, spielt eine sehr wichtige Rolle bei der Kontruktion von B-Splines.
2.5. B-Splines
Analog zu den B´ezierkurven benutzen wir B-Spline-Basisfunktionen als Gewichte f ¨ur Kon- trollpunkte.
Definition 2.9 (B-Spline)
Seien P
0, P
1, . . . , P
n−1∈ R
dbeliebige Punkte und T = (t
0, t
1, . . . , t
m−1) ein Knotenvektor der L¨ange m. Eine Kurve C = {X(t) | t ∈ [t
k−1, t
m−k)} mit
X(t) =
n−1
X
i=0
N
i,k(t) · P
iheißt B-Spline der Ordnung k.
Man beachte, dass B-Splines, im Gegensatz zu B´ezierkurven, durch die Kontrollpunkte nicht eindeutig bestimmt werden. B-Splines k ¨onnen n¨amlich auch durch die Wahl des Knotenvektors T beeinflusst werden.
Aufgrund der Eigenschaften von B-Spline-Basisfunktionen verhalten sich diese ¨ahnlich
wie die Bernsteinpolynome. Dies f ¨uhrt dazu, dass die Bedeutung der Kontrollpunkte f ¨ur
die entstehende Kurve dieselbe ist wie die f ¨ur B´ezierkurven. Abbildung 2.8 verdeutlicht
dies mit einem Beispiel.
2. Mathematische Grundlagen
P
0P
1P
2P
3P
4P
5P
6P
7P
8P
9P
10P
11P
12P
13t6
t7
t8
t9
t10
t11
t12
t13
t14
Abbildung 2.8.: Beispiel einer B-Spline-Kurve der Ordnung k = 7 mit n = 14 Kontroll- punkten P
0, . . . , P
13∈ R
2und m = 21 Knoten t
0, . . . , t
20mit t
i=
20i. Die Punkte X(t
6), . . . , X(t
14) sind auf der Kurve eingezeichnet worden.
Analog zur schematischen Darstellung von B-Spline-Basisfunktionen lassen sich auch B- Splines schematisch darstellen. Diese Darstellung ist in Abbildung 2.9 zu finden. An ihr wird eine wichtige Beziehung zwischen der Anzahl n der Kontrollpunkten, der Anzahl m der Knoten und der Ordnung k erkannt. Es gilt n¨amlich f ¨ur jeden B-Spline die Gleichung
m = n + k .
P0 P1 P2 P3 P4 P5 P6 P7 P8 P9
[t0, t1) [t1, t2) [t2, t3) [t3, t4) [t4, t5) [t5, t6) [t6, t7) [t7, t8) [t8, t9) [t9, t10)[t10, t11[t)11, t12[t)12, t13) N10,3
N10,2 N11,2
N9,2 N9,3 N9,4
N0,1 N1,1 N2,1 N3,1 N4,1 N5,1 N6,1 N7,1 N8,1 N9,1
N0,2 N1,2 N2,2 N3,2 N4,2 N5,2 N6,2 N7,2 N8,2 N9,2
N0,3 N1,3 N2,3 N3,3 N4,3 N5,3 N6,3 N7,3 N8,3 N9,3
N0,4 N1,4 N2,4 N3,4 N4,4 N5,4 N6,4 N7,4 N8,4 N9,4
Abbildung 2.9.: Rekursives Berechnungsschema f ¨ur B-Splines am Beispiel einer B-Spline-
Kurve mit k = 4, n = 10 und m = n + k = 14.
2.5. B-Splines
Lokalit¨atseingenschaft. Eine sehr wichtige Eigenschaft von B-Spline-Kurven ist die so- genannte Lokalit¨atseigenschaft. Diese folgt aus dem rekursiven Berechnungsschema von Ba- sisfunktionen und besagt, dass jeder Kontrollpunkt P
idie Kurve nur im Intervall [t
i, t
i+k) beeinflusst. Dies kann man ebenfalls an Abbildung 2.9 erkennen. Insbesondere besagt die- se Aussage, dass die Kurve im Intervall [t
i, t
i+1) nur durch die Kontrollpunkte P
i−k+1, . . . , P
ibestimmt wird.
Konvexe H ¨ullen einer B-Spline-Kurve. Aus der Lokalit¨atseigenschaft und den zwei vorgestellten Eigenschaften von Basisfunktionen folgt, dass die Kurve f ¨ur t ∈ [t
i, t
i+1) in der konvexen H ¨ulle des durch die Punkte P
i−k+1, . . . , P
ibestimmten Polygons liegt (siehe Abbildung 2.10). Aus diesem Grund wurde, in der Definition von B-Splines, nicht das ge- samte Intervall [t
0, t
m−1) f ¨ur t gew¨ahlt. Die Summe der Basisfunktionen ist n¨amlich nicht im gesamten Intervall Eins, sondern nur im Intervall [t
k−1, t
m−k). W ¨urde man das gesam- te Intervall w¨ahlen, so k ¨onnte die Kurve die konvexe H ¨ulle des Kontrollpunktepolygons verlassen, was f ¨ur den Zweck dieser Arbeit unerw ¨unscht w¨are. Diese Eigenschaft ist von besonderer Wichtigkeit. Im Abschnitt 3.4 werden wir diese der entsprechenden Aussage bei B´ezierkurven gegen ¨uberstellen.
P
2P
3P
4P
5P
6P
7P
8t
8t
9Abbildung 2.10.: B-Spline-Kurve aus Abbildung 2.8 mit Ordnung k = 7, Kontrollpunkten
P
0, . . . , P
13∈ R
2und Knotenvektor T = (t
0, . . . , t
20). Die Kurve ist f ¨ur t ∈
[t
8, t
9) vollst¨andig in der konvexen H ¨ulle der Punkte P
2, . . . , P
8enthalten.
2. Mathematische Grundlagen
3. Wichtige Eigenschaften von B-Splines
B -SPLINES sind durch ihre Definition etwas komplizierter als B´ezierkurven. Sie be- sitzen jedoch Eigenschaften, die B´ezierkurven nicht besitzen aber f ¨ur diese Arbeit große Relevanz haben. Diese h¨angen n¨amlich sehr eng mit der Wahl der Knoten t
0, . . . , t
m−1 zusammen. In diesem Kapitel wird dargestellt, wie man die Knoten eines B- Splines manipulieren kann und welche Effekte diese Ver¨anderungen haben k ¨onnen. An- schließend wird ein wichtiger Zusammenhang zwischen B´ezierkurven und B-Splines her- gestellt. Am Ende des Kapitels wird eine Methode diskutiert, mit der man einem B-Spline neue Knoten hinzuf ¨ugen kann.
3.1. Mehrfachknoten und eingespannte B-Splines
Dem aufmerksamen Leser wird nicht entgangen sein, dass die einzige Anforderung an den Knotenvektor T = (t
0, . . . , t
m−1), n¨amlich t
0≤ t
1≤ . . . ≤ t
m−1, nicht ausschließt, dass zwei oder mehr Knoten denselben Wert haben. Ein Knoten darf mehrmals vorkommen.
Kommt ein Knoten s mal vor, so spricht man von einem s-fachen Knoten bzw. von einem Knoten mit Multiplizit¨at s. Die Tatsache, mehrere Kopien desselben Knotens benutzen zu d ¨urfen, erweitert die M ¨oglichkeiten beim Einsetzen von B-Splines, um Kurven darzustel- len. So k ¨onnen zum Beispiel Unstetigkeiten erzeugt werden wie spitze Ecken. Bei der Be- rechnung der Basisfunktionen ist allerdings etwas Vorsicht geboten. Kommt n¨amlich ein Knoten mehrmals vor, so begegnet man dem Fall, dass ein Bruch eine Null im Nenner stehen hat. Es wird gezeigt wie dieses Problem auf eine sehr einfache Art umgangen wer- den kann, ohne zu sehr auf technischen Details einzugehen. Voraussetzung daf ¨ur ist, dass alle bisher gezeigten Eigenschaften von B-Spline-Basisfunktionen und -Kurven auch bei Mehrfachknoten erhalten bleiben.
Wie Mehrfachknoten funktionieren und was sie f ¨ur Konsequenzen haben, wird an einem Beispiel illustriert.
Beispiel 3.1 (Mehrfachknoten)
Man betrachte den Knotenvektor T = (t
0, t
1, t
2, t
3, t
4, t
5, t
6) = (0, 1, 2, 2, 2, 3, 4) mit dem Drei-
fachknoten 2. Auch hier werden alle Basisfunktionen f ¨ur die F¨alle k = 1, k = 2 und k = 3,
beginnend mit dem Fall k = 1.
3. Wichtige Eigenschaften von B-Splines
[0, 1) [1, 2) [2, 3) [3, 4)
N
0,1(t) 1 0 0 0
N
1,1(t) 0 1 0 0
N
2,1(t) 0 0 0 0
N
3,1(t) 0 0 0 0
N
4,1(t) 0 0 1 0
N
5,1(t) 0 0 0 1
Man erkennt, dass die Subintervalle [t
2, t
3) und [t
3, t
4) nicht existieren und die entsprechenden Basisfunktionen N
2,3(t) und N
3,4(t) beide konstant Null sind. Die Folgen hiervon begegnet man in der Berechnung von N
1,2(t):
N
1,2(t) = t − t
1t
2− t
1· N
1,1(t) + t
3− t
t
3− t
2· N
2,1(t)
= (t − 1) · N
1,1(t) + 2 − t
0 · N
2,1(t)
| {z }
:=0
= (t − 1) · N
1,1(t)
=
(
t falls t − 1 ∈ [0, 1) 0 sonst
Nach mehreren Rechnungen erh¨alt man f ¨ur k = 2 und k = 3 folgende Ergebnisse:
[0, 1) [1, 2) [2, 3) [3, 4)
N
0,2(t) t 2 − t 0 0
N
1,2(t) 0 t − 1 0 0
N
2,2(t) 0 0 0 0
N
3,2(t) 0 0 3 − t 0
N
4,2(t) 0 0 t − 2 4 − t
[0, 1) [1, 2) [2, 3) [3, 4)
N
0,3(t)
12t
2−
12(3t
2− 16t + 20) 0 0
N
1,3(t) 0 (t − 1)
20 0
N
2,3(t) 0 0 (3 − t)
20
N
3,3(t) 0 0 −
12(3t
2− 4t + 5)
12(4 − t)
2In Abbildung 3.1 sind die Graphen aller berechneten Basisfunktionen abgebildet.
Der Grund wieso in der Rechnung der Term
2−t0· N
2,1(t) als Null definiert wurde ist, dass obwohl der Bruch nicht definiert ist, dieser trotzdem nur auf das Intervall [t
1, t
2) Einfluss h¨atte. Da aber [t
1, t
2) = [1, 1) = ∅ gilt konnte der Term ohne Weiteres ignoriert werden.
Betrachtet man wieder die Definition der Basisfunktionen, so stellt man fest, dass solche
3.1. Mehrfachknoten und eingespannte B-Splines
t N
i,1(t)
0 1 2 3 4
0
1
N0,1 N1,1 N4,1 N5,1t N
i,2(t)
0 1 2 3 4
0
1
N0,2 N1,2 N3,2
N4,2
t N
i,3(t)
0 1 2 3 4
0 1
N0,3
N1,3 N3,3
N4,3
Abbildung 3.1.: Basisfunktionen N
i,kaus Beispiel 2.8 f ¨ur k = 1, 2, 3.
Situationen immer bei Termen der Form
t...b−ta
· N
a,b−a(t) vorkommen. Da bekannt ist, dass N
a,b−a(t) nur im Intervall [a, b) positiv ist, so kann der Term stets vernachl¨assigt werden.
Man vergleiche die Kurven f ¨ur k = 3 mit den Kurven in Abbildung 2.7 auf Seite 12. Diese entstandene Unstetigkeit an der Stelle t = 2 ist charakteristisch f ¨ur Mehrfachknoten. Diese
¨ubertr¨agt sich nat ¨urlich auf den jeweiligen B-Spline.
Mehrfachknoten eignen sich nicht nur gut, um Kurven mit Ecken und spitzen Winkeln darzustellen, sondern auch um zu erzwingen, dass die Kurve durch bestimmte Punk- te verl¨auft. Der in Abbildung 2.8 auf Seite 14 dargestellte B-Spline ist aus genau diesem Grund nicht zufriedenstellend. Ihm fehlt die Eigenschaft beide Endpunkte zu ber ¨uhren.
Man kann zwar den Verlauf der Kurve intuitiv mithilfe der Kontrollpunkte beeinflussen, jedoch nicht wo diese anf¨angt oder aufh ¨ort. Aus diesem Grund nimmt man sich Mehr- fachknoten zu Hilfe um die B-Spline-Kurve an den zwei ¨außeren Knotrollpunkten P
0und P
n−1einspannen.
Aus Abschnitt 2.4 wissen wir, dass die Summe der Basisfunktionen in der k-ten Ebene im
Intervall [t
k−1, t
m−k) Eins ergibt. W¨ahlt man dazu den Knotenvektor wie folgt:
3. Wichtige Eigenschaften von B-Splines
T = (t
0, . . . , t
k−1| {z }
gleiche Knoten
, t
k, . . . , t
m−k−1| {z }
innere Knoten
, t
m−k, . . . , t
m−1| {z }
gleiche Knoten
) ,
dann erh¨alt man: N
0,k(t
k−1) = 1 und N
n−1,k(t
m−k) = 1. Das bedeutet, dass die Kurve, analog zu den B´ezierkurven, durch die Endpunkte P
0und P
n−1gehen w ¨urde. Ein Beispiel f ¨ur eine solche eingespannte Kurve wird in Abbildung 3.2 dargestellt.
P
0P
1P
2P
3P
4P
5P
6P
70
1
2
3 4
Abbildung 3.2.: Eingespannter B-Spline der Ordnung k = 5 mit Kontrollpunkten P
0, . . . , P
7∈ R
2und Knotenvektor T = (0, 0, 0, 0, 0, 1, 2, 3, 4, 4, 4, 4, 4).
3.2. Zusammenhang zwischen B´ezierkurven und B-Splines
B´ezierkurven bilden eine Teilklasse der B-Splines. Bestimmte B-Splines lassen sich n¨amlich in B´ezierkurven ¨uberf ¨uhren, ohne dass sich die jeweilige Kurve ver¨andert. Diese m ¨ussen eingespannt sein und d ¨urfen keine innere Knoten besitzen. Das heißt, dass sie einen Kno- tenvektor der Form
T = (t
0, . . . , t
k−1| {z }
gleiche Knoten
, t
k, . . . , t
2k−1| {z }
gleiche Knoten
)
besitzen m ¨ussen. Ed folgt eine Veranschaulichung durch ein Beispiel.
Beispiel 3.2 (B-Spline-Basisfunktionen als Bernsteinpolynome.)
Gegeben seien die Kontrollpunkte P
0, . . . , P
4∈ R
dund der Knotenvektor T = (0, 0, 0, 0, 0, 1, 1, 1, 1, 1).
Gesucht ist eine B-Spline-Kurve
X(t) =
4
X
i=0
N
i,5(t) · P
if ¨ur t ∈ [0, 1)
3.2. Zusammenhang zwischen B´ezierkurven und B-Splines
der Ordnung k = 5 ¨uber T. Da nur ein Subintervall zu betrachten ist, n¨amlich [0, 1), fallen viele Basisfunktionen weg. Die ¨ubriggebliebenen werden sukzessiv f ¨ur genau dieses Subintervall berechnet. Man erh¨alt folgende Basisfunktionen:
N
4,1(t) = 1
N
3,2(t) = (1 − t) · N
4,1(t) = 1 − t
N
4,2(t) = t · N
4,1(t) = t
N
2,3(t) = (1 − t) · N
3,2(t) = (1 − t)
2N
3,3(t) = t · N
3,2(t) + (1 − t) · N
4,2(t) = 2 · t · (1 − t)
N
4,3(t) = t · N
4,2(t) = t
2N
1,4(t) = (1 − t) · N
2,3(t) = (1 − t)
3N
2,4(t) = t · N
2,3(t) + (1 − t) · N
3,3(t) = 3 · t · (1 − t)
2N
3,4(t) = t · N
3,3(t) + (1 − t) · N
4,3(t) = 3 · t
2· (1 − t)
N
4,4(t) = t · N
4,3(t) = t
3N
0,5(t) = (1 − t) · N
1,4(t) = (1 − t)
4N
1,5(t) = t · N
1,4(t) + (1 − t) · N
2,4(t) = 4 · t · (1 − t)
3N
2,5(t) = t · N
2,4(t) + (1 − t) · N
3,4(t) = 6 · t
2· (1 − t)
2N
3,5(t) = t · N
3,4(t) + (1 − t) · N
4,4(t) = 4 · t
3· (1 − t)
N
4,5(t) = t · N
4,4(t) = t
4Vergleicht man nun die Basisfunktionen aus diesem Beispiel mit den Bernsteinpolynomen aus dem Beispiel aus Abschnitt 2.2, so erkennt man Beziehung
N
i,5(t) =
Ç4
i
å· t
i· (1 − t)
4−i= B
4,i(t)
f ¨ur i = 0, 1, 2, 3. Insbesondere entspricht die B-Spline-Kurve
P4i=0N
i,5(t) · P
igenau der B´ezierkurve
P4i=0B
4,i(t) · P
i. Diesen Sachverhalt l¨asst sich f ¨ur beliebige Knotenvektoren T = (a, . . . , a, b, . . . , b), bestehend aus k as und k bs, verallgemeinern. Man erh¨alt in diesem Fall f ¨ur i = 0, . . . , k − 1 die Basisfunktionen
N
i,k(t) =
Ç
k − 1 i
å
·
Å
t − a b − a
ãi
·
Åb − t
b − a
ãk−i−1,
welche sich durch die Projektion des Intervalls [a, b) auf das Intervall [0, 1) wieder in Bern-
steinpolynome ¨uberf ¨uhren lassen. Man setze t := (b − a)u + a f ¨ur ein u ∈ [0, 1) und erh¨alt:
3. Wichtige Eigenschaften von B-Splines
N
i,k(t) =
Ç
k − 1 i
å
·
Å
t − a b − a
ãi
·
Åb − t
b − a
ãk−i−1=
Ç
k − 1 i
å
·
Ç
((b − a)u + a) − a b − a
åi
·
Ç
b − ((b − a)u + a) b − a
åk−i−1
=
Ç
k − 1 i
å
· u
i· (1 − u)
k−i−1= B
k−1,i(u)
Aus diesem Grund k ¨onnen die Kontrollpunkte einer solchen B-Spline-Kurve direkt als Kontrollpunkte f ¨ur eine B´ezierkurve desselben Grades ¨ubernommen werden. Die Kurve bleibt dabei unver¨andert.
3.3. Einf ¨ugen von B-Spline-Knoten
Die f ¨ur diese Arbeit wichtigste Eigenschaft von B-Splines ist, dass beliebige Knoten in den Knotenvektor hinzugef ¨ugt werden k ¨onnen, ohne die Form der Kurve zu ver¨andern. Er- innert man sich an die Gleichung m = n + k, welche die Anzahl an Knoten eindeutig durch die Anzahl der Kontrollpunkte und die Ordnung der Kurve bestimmt, so stellt man Folgendes fest: Beim Hinzuf ¨ugen eines Knotens, m ¨usste man, entweder die Ordnung der Kurve erh ¨ohen oder einen weiteren Kontrollpunkt hinzuf ¨ugen, damit das Verh¨altnis nicht zerst ¨ort wird. Die Technik hierf ¨ur bestimmt die Koordinaten eines neuen Kontrollpunktes welcher problemlos hinzugef ¨ugt werden kann, ohne die Gestalt der Kurve zu ver¨andern.
Diese wurde 1980 von Wolfgang Boehm entwickelt. In diesem Abschnitt wird diese Me- thode erkl¨art. F ¨ur eine detailliertere Beschreibung sei der Leser auf [2] verwiesen.
Gegeben seien Kontrollpunkte P
0, . . . , P
n−1, einen Knotenvektor T = (t
0, . . . , t
i−1, t
i+1, . . . , t
m) und ein Knoten t
i∈ [t
i−1, t
i+1), welcher in T hinzuf ¨ugt werden soll. Ziel dieser Methode ist es, k der Kontrollpunkte durch k + 1 weiter so zu ersetzen, dass die Kurve dadurch nicht ver¨andert wird. Aus Abschnitt 2.5 ist bekannt, dass nur die Punkte P
i−k, . . . , P
i−1betrachtet werden m ¨ussen. Die Vorgehensweise ist Folgende:
1. Berechnung der Hilfsvariablen l
0, . . . , l
kmithilfe der Formel:
l
j= t
i− t
i−k+jt
i+j− t
i−k+j(j = 0, . . . , k) .
2. Zuhilfenahme dieser Hilfsvariablen f ¨ur die Berechnung von Hilfspunkten P
i−k0, . . . , P
i0. Es gilt:
P
j+i−k0= (1 − l
j) · P
j+i−k−1+ l
j· P
j+i−k(j = 0, . . . , k) .
3. Ersetzen der Punkte P
i−k, . . . , P
i−1durch die Hilfspunkte P
i−k0, . . . , P
i0. Die nicht be-
troffenen Punkte bleiben erhalten.
3.4. Konsequenzen der Lokalit¨atseigenschaft
Wir illustrieren dies Anhand eines Beispiels.
Beispiel 3.3 (Einf ¨ugen eines B-Spline-Knotens)
Sei k = 4 die Ordnung eines B-Splines mit Knotenvektor T = (0, 1, 2, 3, 4, 6, 7, 8, 9, 10) und Kontrollpunkten
P
0=
Ç0
0
å, P
1=
Ç0
1
å, P
2=
Ç1
2
å, P
3=
Ç3
2
å, P
4=
Ç4
1
å, P
5=
Ç4
0
å. Der Knoten t
5= 5 ∈ [4, 6) soll nach obigem Schema als neuer Knoten hinzugef ¨ugt werden.
1. F ¨ur die Hilfsvariablen l
0, l
1, l
2, l
3, l
4erh¨alt man:
l
0= 5 − 1
5 − 1 = 1 , l
1= 5 − 2 6 − 2 = 3
4 , l
2= 5 − 3 7 − 3 = 1
2 , l
3= 5 − 4 8 − 4 = 1
4 , l
4= 5 − 5 9 − 5 = 0 . 2. Daraus ergeben sich folgende Hilfspunkte:
P
10= (1 − 1) ·
Ç0
0
å+ 1 ·
Ç0
1
å=
Ç0
1
å, P
20=
Å
1 − 3
4
ã·
Ç0
1
å+ 3 4 ·
Ç
1 2
å=
Ç347 4
å
, P
30=
Å
1 − 1
2
ã·
Ç1
2
å+ 1 2 ·
Ç
3 2
å=
Ç2
2
å, P
40=
Å
1 − 1
4
ã·
Ç3
2
å+ 1 4 ·
Ç
4 1
å=
Ç1347 4
å
, P
50= (1 − 0) ·
Ç