Labor: Geometrisches Modellieren

Wochenstunden:

1 Vorlesung + 1 Übung
Prüfungsart:Laborübung
Frequenz:jährlich (Wintersemester)
Credit Points:6, unbenotet

Zielsetzung

Die Teil­neh­mer des Kur­ses sol­len an­hand eines grö­ße­ren Pro­jek­tes prak­ti­sche Pro­gram­mier­erfah­run­gen im Be­reich des Geo­me­tri­schen Mo­del­lie­rens sam­meln.

Es wer­den Ihnen wei­ter­hin Kennt­nis­se in der ob­jekt­ori­en­tier­ten Pro­gram­mie­rung (C++), der GUI Pro­gram­mie­rung mit GTK--, der Gra­phik­pro­gram­mie­rung mit OpenGL sowie grund­le­gen­de Kon­zep­te des ob­jekt­ori­en­tier­ten De­signs ver­mit­telt.

Dabei wer­den in den Vor­le­sun­gen vor­ge­stell­te Ver­fah­ren ver­tieft, ana­ly­siert und auf einer Ent­wick­lungs­um­ge­bung auf­bau­end im­ple­men­tiert.

Vor­aus­set­zung sind Kennt­nis­se in einer hö­he­ren Pro­gram­mier­spra­che (wie C++, C, Java, Pas­cal oder ähn­li­ches). Die wei­te­ren In­hal­te wer­den in der An­lei­tung zum Labor er­läu­tert. Die Teil­neh­mer kön­nen in Klein­grup­pen (bis max. 3 Per­so­nen) zu­sam­men­ar­bei­ten, müs­sen aber je ein kom­plet­tes Pro­gramm ab­ge­ben und alle Pro­gramm­tei­le er­klä­ren kön­nen.
Emp­foh­len wird der Be­such der Vor­le­sung Be­rech­nen­de Geo­me­trie, in der die theo­re­ti­schen Grund­la­gen des zu im­ple­men­tie­ren­den Sys­tems er­klärt wer­den. 

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