Labor: Geometrisches Modellieren
Wochenstunden: | 1 Vorlesung + 1 Übung |
Prüfungsart: | Laborübung |
Frequenz: | jährlich (Wintersemester) |
Credit Points: | 6, unbenotet |
Zielsetzung
Die Teilnehmer des Kurses sollen anhand eines größeren Projektes praktische Programmiererfahrungen im Bereich des Geometrischen Modellierens sammeln.
Es werden Ihnen weiterhin Kenntnisse in der objektorientierten Programmierung (C++), der GUI Programmierung mit GTK--, der Graphikprogrammierung mit OpenGL sowie grundlegende Konzepte des objektorientierten Designs vermittelt.
Dabei werden in den Vorlesungen vorgestellte Verfahren vertieft, analysiert und auf einer Entwicklungsumgebung aufbauend implementiert.
Voraussetzung sind Kenntnisse in einer höheren Programmiersprache (wie C++, C, Java, Pascal oder ähnliches). Die weiteren Inhalte werden in der Anleitung zum Labor erläutert. Die Teilnehmer können in Kleingruppen (bis max. 3 Personen) zusammenarbeiten, müssen aber je ein komplettes Programm abgeben und alle Programmteile erklären können.
Empfohlen wird der Besuch der Vorlesung Berechnende Geometrie, in der die theoretischen Grundlagen des zu implementierenden Systems erklärt werden.
Inhalte
Ziel dieses Kurses ist die schrittweise Entwicklung eines Programmpaketes in C++ zur Visualisierung, Erstellung und Manipulation verschiedener Spline Typen.
In allen modernen Design-Werkzeugen des CAD und der Computergraphik stellen Bezier- und B-Spline-Kurven das zentrale Gestaltungsmittel dar. Die Teilnehmer lernen im Laufe des Labors verschiedene Klassen von Spline-Kurven und deren Vor- und Nachteile kennen.
Dazu müssen zunächst Monom-Spline-Kurven aus einer Datei eingelesen und gespeichert werden. Durch Vorgabe einiger Punkte in einem 2D Grafikfenster soll ein interpolierender Spline zu verschiedenen Parametrisierungen berechnet werden.
Es werden außerdem Bezier- und B-Splines implementiert, zu deren Visualisierung die Algorithmen von deCasteljau und deBoor genutzt werden soll. Dabei wird die graphische Benutzerschnittstelle (GUI), die zu Beginn in einer Basisversion vorgegeben wird, ständig erweitert.
Die Aufgaben sind im Einzelnen:
- Erweitern der GUI um Zeichenbereich, Mausabfragen und Menüeinträgen
- Implementation einer MonomSpline Klasse (ausgehend von Spline Basisklasse) IO-Routinen zum Lesen und Schreiben aus/in eine(r) Datei
- Darstellung eines MonomSplines im Zeichenbereich, Festlegen einer Zeichengenauigkeit durch Schieberegler
- Berechnung von interpolierenden kubischen Monom-Splines bei gegebener Parametrisierung (Lösen eines linearen Gleichungs-Systems in zwei Dimensionen)
- Berechnung unterschiedlicher Parametrisierungen (gleichmäßig, chordal, zentripetal)
- Implementation von Bezier-Splines (volle Funktionalität, Auswertung mit de-Casteljau, Stetigkeitsbedingungen an Übergängen)
- Implementation von B-Splines (volle Funktionaliät, Auswertung mit deBoor)
- Erweiterung auf geschlossene B-Splines und Konvertierung von Bezier-Splines nach B-Splines