Download
ak softwaretechnologie n.
Skip this Video
Loading SlideShow in 5 Seconds..
AK Softwaretechnologie PowerPoint Presentation
Download Presentation
AK Softwaretechnologie

AK Softwaretechnologie

90 Vues Download Presentation
Télécharger la présentation

AK Softwaretechnologie

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

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

  2. Inhalt • Geschichte von CGAL • Grundlegende Designentscheidung • Aufbau von CGAL • Core Library • Geometric Kernel • Basic Library • Support Library • Lizenzierung

  3. Geometrische Algorithmen • Computergrafik • Virtual Reality • Modellierung von Teilen • Robotik • Geographische Informationssystemen • Bildverarbeitung • Formerkennung • Schaltungsentwicklung

  4. Probleme • rechnerische Genauigkeit • "Floatpoint" nicht exakt • Behandlung von Sonderfällen • Algorithmen oft schwer zu verstehen • für User schwer von Grund auf zu implementieren

  5. 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

  6. Grundlegende Designentscheidung 3 Möglichkeiten • Sammlung von Einzelkomponenten • Integrierte Applikationen • Software Libraries

  7. Sammlung von Einzelkomponenten • „Gems“ Ansatz • Bestehende Gems Sammlungen -> Grafik • Aufwendige „Kombination“ • Computional Geometrie vs. Grafik • Mehr Datenstrukturen beteiligt • Komplexere Algorithmen

  8. 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)

  9. 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

  10. 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

  11. Struktur von CGAL

  12. Vorteile: Modularer Aufbau • Bibliothek ist leichter zu „lernen“ • Entwicklungsarbeit kann besser aufgeteilt werden (Europa) • Verringerte Abhängigkeiten • leichteres Testen • leichteres Warten

  13. Struktur von CGAL

  14. 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

  15. Geometric Kernel (2) • 3 Teile • 2D Objekte • 3D Objekte • nD Objekte • Jeweils für • Kartesische Koordinaten • Homogene Koordinaten

  16. 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)

  17. Geometric Kernel (4) • Jeder Typ hat Member Functions • Bounding box • Affine Transformation • globale Funktionen • Erkennung und Berechnung von Schnitten

  18. 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

  19. 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

  20. Struktur von CGAL

  21. Basic Library (1) • Komplexere geometrische Objekte • Polygone • Planar Maps • Polyheder • ... • Algorithmen • Konvexe Hülle • Triangulierung • Überschneidung von zwei Polygonen • ...

  22. Basic Library (2) • Unabhängig vom Kernel • Trait classes • Standard trait class Implementierungen verwenden CGAL Kernel • Andere verwenden den Geometrischen Teil von LEDA

  23. Struktur von CGAL

  24. 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

  25. 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

  26. 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

  27. Struktur von CGAL

  28. 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

  29. 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

  30. Lizensierung Open Source • Kernel und Support Library • LGPL Lizenz • Komerzielle Anwendungen • Basic Library • QPL Lizenz • Nur Open Source Anwendungen • Firmenintern • Kommerzielle Lizenz -> GeometryFactory

  31. Unterstütze Plattformen

  32. 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