Download - AK Softwaretechnologie
![Page 1: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/1.jpg)
AK Softwaretechnologie
Computational Geometry Algorithms Library
Stephan Bauer 9930355
Einführung in
![Page 2: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/2.jpg)
Inhalt
• Geschichte von CGAL• Grundlegende Designentscheidung• Aufbau von CGAL
– Core Library– Geometric Kernel– Basic Library– Support Library
• Lizenzierung
![Page 3: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/3.jpg)
Geometrische Algorithmen
• Computergrafik• Virtual Reality• Modellierung von Teilen• Robotik• Geographische Informationssystemen• Bildverarbeitung• Formerkennung• Schaltungsentwicklung
![Page 4: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/6.jpg)
Grundlegende Designentscheidung
3 Möglichkeiten
– Sammlung von Einzelkomponenten
– Integrierte Applikationen
– Software Libraries
![Page 7: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/7.jpg)
Sammlung von Einzelkomponenten
• „Gems“ Ansatz
• Bestehende Gems Sammlungen -> Grafik• Aufwendige „Kombination“
• Computional Geometrie vs. Grafik– Mehr Datenstrukturen beteiligt– Komplexere Algorithmen
![Page 8: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/11.jpg)
Struktur von CGAL
![Page 12: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/13.jpg)
Struktur von CGAL
![Page 14: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/15.jpg)
Geometric Kernel (2)
• 3 Teile– 2D Objekte– 3D Objekte– nD Objekte
• Jeweils für– Kartesische Koordinaten– Homogene Koordinaten
![Page 16: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/17.jpg)
Geometric Kernel (4)
• Jeder Typ hat Member Functions– Bounding box– Affine Transformation
• globale Funktionen– Erkennung und Berechnung von Schnitten
![Page 18: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/20.jpg)
Struktur von CGAL
![Page 21: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/21.jpg)
Basic Library (1)
• Komplexere geometrische Objekte– Polygone– Planar Maps– Polyheder– ...
• Algorithmen– Konvexe Hülle– Triangulierung– Überschneidung von zwei Polygonen– ...
![Page 22: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/23.jpg)
Struktur von CGAL
![Page 24: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/27.jpg)
Struktur von CGAL
![Page 28: AK Softwaretechnologie](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062321/56812be3550346895d90567d/html5/thumbnails/32.jpg)
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