Aufgaben
Die Quelltexte zu verschiedenen Aufgaben sind in im Unterpaket aufgaben zu finden.
Aufgabe 1:
Schreiben Sie eine Java-Klassendeklaration für quadratische Bézier-Kurven. Berücksichtigen Sie für diese Klassen folgende Methoden:
- Berechnen eines Punktes auf der Bézier-Kurve (abhängig vom Parameter t ),
- Berechnen eines Punktes im Abstand a von der Bézier-Kurve (abhängig vom Parameter t ),
- Berechnen der Kurvenlänge s = P0 - Pt einer Bézier-Kurve bis zum Parameterwert t,
- Berechnen des Parameters t für die Kurvenlänge s = P0 - Pt (Pt = P(t )),
- Transformieren in einen Streckenzug, der die Bézier-Kurve beliebig genau approximiert,
- für die Ausgabe der Komponenten als String sowie zur Darstellung als Graphik.
Aufgabe 2:
Entwickeln Sie den Algorithmus von de Casteljau für eine Bézier-Kurve vom Grad n !
Aufgabe 3:
Ermitteln Sie die Stützpunkte einer kubischen Bézier-Kurve, die einen Viertelkreis vom Radius r = 1000 optimal approximiert!
Hinweis: Dazu gibt es eine passende Testklasse im Paket demos.
Aufgabe 4:
Schreiben Sie eine Java-Klassendeklaration für Catmull-Rom-Splines, die aus kubischen Bézier-Kurven (im R² ) zusammengesetzt sind. Berücksichtigen Sie für diese Klassen insbesondere die Methoden
- zum Berechnen und zur Ausgabe der Kurvensegmente,
- für die Ausgabe der Komponenten in einer Zeichenkette, sowie zur Darstellung als Graphik.
Aufgabe 5:
Entwerfen Sie die Java-Klassendeklaration für C²-stetige Splines, die aus Bézier-Kurven (im R² ) zusammengesetzt sind, und (wie bei den Catmull-Rom-Splines) die Parameter der Stetigkeitsbedingungen näherungsweise aus den benachbarten Stützpunkten bestimmen.
- Welchen Grad müssen Bézier-Kurven besitzen, die als Spline-Segmente verwendet werden können?
- Formulieren Sie die Stetigkeitsbedingungen an den Segmentgrenzen!