AK Softwaretechnologie

32
AK Softwaretechnologie Computational Geometry Algorithms Library Stephan Bauer 9930355 Einführung in

description

AK Softwaretechnologie. Einführung in. Computational Geometry Algorithms Library. Stephan Bauer 9930355. Inhalt. Geschichte von CGAL Grundlegende Designentscheidung Aufbau von CGAL Core Library Geometric Kernel Basic Library Support Library Lizenzierung. Geometrische Algorithmen. - PowerPoint PPT Presentation

Transcript of AK Softwaretechnologie

Page 1: AK Softwaretechnologie

AK Softwaretechnologie

Computational Geometry Algorithms Library

Stephan Bauer 9930355

Einführung in

Page 2: AK Softwaretechnologie

Inhalt

• Geschichte von CGAL• Grundlegende Designentscheidung• Aufbau von CGAL

– Core Library– Geometric Kernel– Basic Library– Support Library

• Lizenzierung

Page 3: AK Softwaretechnologie

Geometrische Algorithmen

• Computergrafik• Virtual Reality• Modellierung von Teilen• Robotik• Geographische Informationssystemen• Bildverarbeitung• Formerkennung• Schaltungsentwicklung

Page 4: AK Softwaretechnologie

Probleme

• rechnerische Genauigkeit – "Floatpoint" nicht exakt

• Behandlung von Sonderfällen

• Algorithmen oft schwer zu verstehen – für User schwer von Grund auf zu

implementieren

Page 5: AK Softwaretechnologie

Geschichte von CGAL

• Idee geboren Jänner 1995 Utrecht• offizielles ESPRIT Projekt Oktober 1996• Von Instituten aus ganz Europa und Israel

– Utrecht University– ETH Zürich– Freie Universität Berlin– Martin-Luther Universität, Halle– INRIA Sophia Antipolis– Max-Planck Institut für Computer Science– Universität Saarbrücken– RISC Linz– Tel-Aviv University

Page 6: AK Softwaretechnologie

Grundlegende Designentscheidung

3 Möglichkeiten

– Sammlung von Einzelkomponenten

– Integrierte Applikationen

– Software Libraries

Page 7: AK Softwaretechnologie

Sammlung von Einzelkomponenten

• „Gems“ Ansatz

• Bestehende Gems Sammlungen -> Grafik• Aufwendige „Kombination“

• Computional Geometrie vs. Grafik– Mehr Datenstrukturen beteiligt– Komplexere Algorithmen

Page 8: AK Softwaretechnologie

Integrierte Applikationen

Vorteile– Stellen homogene Umgebung zur Verfügung– Einzelteile aufeinander abgestimmt

Nachteile:– in sich geschlossen– Schwer zu erweitern– Schwer wieder zu verwenden

Bsp.: XYZ GeoBench (späte 80er)

Page 9: AK Softwaretechnologie

Software Libraries

Vorteile– Erweiterbar– Wieder verwendbar

Beispiele:– PLAGEO Utrecht University– C++GAL INRIA Sophia-Antipolis– LEDA Max-Planck Institut für

Informatik, Saarbrücken– GEOMLIB Brown University, Duke

(Java)University, Hopkins University

Page 10: AK Softwaretechnologie

Aufbau von CGAL

• 3 Layer– Core Library

• grundlegende nichtgeometrische Funktionalität

– Geometric Kernel• grundlegende geometrische Objekte und Funktionen

– Basic Library• komplexere Algorithmen und Datenstrukturen

• Support Library

Page 11: AK Softwaretechnologie

Struktur von CGAL

Page 12: AK Softwaretechnologie

Vorteile: Modularer Aufbau

• Bibliothek ist leichter zu „lernen“

• Entwicklungsarbeit kann besser aufgeteilt werden (Europa)

• Verringerte Abhängigkeiten– leichteres Testen– leichteres Warten

Page 13: AK Softwaretechnologie

Struktur von CGAL

Page 14: AK Softwaretechnologie

Geometric Kernel (1)

• einfache geometrische Objekte – Punkte, Linien, Segmente, Dreiecke,...

• Objekte haben konstante Größe• Operationen auf Objekte wie Schnitt,

Distanz und Affine Transformation• Die Objekte im Kernel sind geschlossen

hinsichtlich der affinen Transformation– Aus der Existenz von Kreisen folgt die Existenz

von Ellipsen

Page 15: AK Softwaretechnologie

Geometric Kernel (2)

• 3 Teile– 2D Objekte– 3D Objekte– nD Objekte

• Jeweils für– Kartesische Koordinaten– Homogene Koordinaten

Page 16: AK Softwaretechnologie

Geometric Kernel (3)

• Die homogene Darstellung erweitert die kartesische Darstellung um eine Koordinate

• Homogen– (x0,x1...xd-1,xd) mit xd≠0

• Karthesisch– (x0/xd,x1/xd...xd-1/xd)

Page 17: AK Softwaretechnologie

Geometric Kernel (4)

• Jeder Typ hat Member Functions– Bounding box– Affine Transformation

• globale Funktionen– Erkennung und Berechnung von Schnitten

Page 18: AK Softwaretechnologie

Geometric Kernel (5)

• Geometrische Objekte sind nicht veränderbar– Keine Möglichkeit die kartesischen Koordinaten

eines Punkts zu setzen– Keine Vorgabe des Koordinatensystems– Setzen von Kartesischen Koordinaten bei

einem Punkt mit Polaren Koordinaten wäre teuer

– Es gibt member Functions, die die homogenen/kartesischen Koordinaten eines Punktes ausgeben

Page 19: AK Softwaretechnologie

Geometric Kernel (6)

• Reference counting für Kernel Objekte– Jedes Objekt zeigt auf eine gemeinsame

Referenz– Erhöhen wenn Objekt kopiert– Verringern wenn Objekt gelöscht wird– Referenz wird gelöscht wenn 0– Vereinfacht durch Unveränderbarkeit der

Kernel Objekte

Page 20: AK Softwaretechnologie

Struktur von CGAL

Page 21: AK Softwaretechnologie

Basic Library (1)

• Komplexere geometrische Objekte– Polygone– Planar Maps– Polyheder– ...

• Algorithmen– Konvexe Hülle– Triangulierung– Überschneidung von zwei Polygonen– ...

Page 22: AK Softwaretechnologie

Basic Library (2)

• Unabhängig vom Kernel– Trait classes– Standard trait class Implementierungen

verwenden CGAL Kernel– Andere verwenden den Geometrischen Teil von

LEDA

Page 23: AK Softwaretechnologie

Struktur von CGAL

Page 24: AK Softwaretechnologie

Core Library (1)

• Grundlegende nicht-geometrische Funktionalitäten die vom Geometric Kernel oder der Basic Library benötigt werden (Unterschiede der C++ Compiler..)

• Unterstützung für– Assertions– Preconditions– Postconditions– Warnings

• Zirkulatoren und Zufallszahlengeneratoren

Page 25: AK Softwaretechnologie

Core Library (2)

Überprüfungen im Kernel– Preconditions– Postconditions– Assertions– Warnings

Standard „ein“– CGAL_KERNEL_NO_PRECONDITIONS– CGAL_KERNEL_NO_POSTCONDITIONS– CGAL_KERNEL_NO_ASSERTIONS– CGAL_KERNEL_NO_WARNINGS

Page 26: AK Softwaretechnologie

Core Library (3)

Zwei weitere Flags– CGAL_KERNEL_CHECK_EXPENSIVE– CGAL_KERNEL_CHECK_EXACTNESS

Standard „aus“

Feinere Unterteilung– CGAL_CH_CHECK_EXPENSIVE

• Nur in der konvexen Hülle

Page 27: AK Softwaretechnologie

Struktur von CGAL

Page 28: AK Softwaretechnologie

Support Library (1)

• Support vs. Core Library– beide nicht-geometrische Funktionen– Support Library Funktionalitäten werden von

den anderen beiden Layern nicht benötigt

• Verbindung zwischen den geometrischen Objekten und externen Repräsentationen– Visualisierung– Externe Dateiformate

Page 29: AK Softwaretechnologie

Support Library (2)

• Unterstützte Formate– VRML– PostScript– GeomView– LEDA Windows for 2D/3D– ...

• Generatoren für Künstliche Test Datensätze

• Funktionalität zur Adaption von number-types anderer Bibliotheken

Page 30: AK Softwaretechnologie

Lizensierung

Open Source

• Kernel und Support Library– LGPL Lizenz

• Komerzielle Anwendungen

• Basic Library– QPL Lizenz

• Nur Open Source Anwendungen• Firmenintern

• Kommerzielle Lizenz -> GeometryFactory

Page 31: AK Softwaretechnologie

Unterstütze Plattformen

Compiler Betriebssysteme

SGI Mips(Pro) CC 7.3, 7.4 (n32, n64)

IRIX 6.5

GNU g++  2.95.3 - 3.3.x IRIX 6.5 / Solaris 2.6+ / Linux 2.x /MS Windows 95/98/2000/XP/NT4 (with Cygwin)

SunPRO CC  5.3 (with patch 111685-05 ),5.4 (with patch 111715-09), 5.5

Solaris 2.6+

MS Visual C++  7.0 (.NET), 7.1 (.NET 2003)

MS Windows 95/98/NT4/2000/XP

Intel C++ 7.1 MS Windows 95/98/2000/XP/NT4

Page 32: AK Softwaretechnologie

Projektumfang

Release 1.2 (1999)– 150.000 Zeilen C++ Code ( KDSI )

• 2/3 Library • 1/3 begleitender Code

– COCOMO (Constructive Cost Model)• Projekt Größe vergleichbar mit Betriebssystem Entwicklung bzw. Datenbank Management Systemen