1 / 32

AK Softwaretechnologie

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.

Download Presentation

AK Softwaretechnologie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related