Reference Manual
Table of Contents


Title Page
Bibliography
Table of Contents
Index


I   Preface


II   Reference Manual

1   Introduction
   1.1   Overview
   1.2   Namespace CGAL::
   1.3   Inclusion Order of Header files
   1.4   Acknowledgement
2   Checks
   2.1   Altering the failure behaviour
   2.2   Control at a finer granularity
   2.3   Customising how errors are reported
3   Introduction
   3.1   Overview
   3.2   Namespace CGAL
   3.3   Inclusion Order of Header files
   3.4   Preconditions, Postconditions, Assertions and Warnings
   3.5   Altering the failure behaviour
   3.6   Customising how errors are reported
   3.7   Compile-time Flags to Control Inlining
   3.8   Acknowledgement


III   2D and 3D Kernel User Manual


IV   2D and 3D Kernel Reference Manual

1   Introduction
   1.1   Robustness
   1.2   CGAL and LEDA
2   Kernel Representations
   2.1   Genericity through Parameterization
   2.2   Cartesian Kernels
   2.3   Homogeneous Kernels
   2.4   Naming conventions
   2.5   Kernel as a Traits Class
   2.6   Choosing a Kernel and Predefined Kernels
3   Kernel Geometry
   3.1   Points and Vectors
   3.2   Kernel Objects
   3.3   Orientation and Relative Position
4   Predicates and Constructions
   4.1   Predicates
   4.2   Constructions
   4.3   Polymorphic Return Values
   4.4   Constructive Predicates
5   Extensible Kernel
   5.1   Introduction
   5.2   An Extensive Example
   5.3   Limitations
6   Kernel Related Tools
   6.1   Introduction
   6.2   Kernel Concept Archetype
7   Reference Pages
   7.1   Concepts
   7.2   Kernel Classes and Operations
   7.3   Predefined Kernels
   7.4   Kernel Objects
   7.5   Constants and Enumerations
   7.6   Global Functions
   7.7   Kernel Function Object Concepts
   7.8   Tag Classes


V   dD Kernel User Manual


VI   dD Kernel Reference Manual

1   Introduction
   1.1   Robustness
   1.2   Genericity
2   Kernel Representations
   2.1   Genericity through Parameterization
   2.2   Cartesian Kernel
   2.3   Homogeneous Kernel
   2.4   Naming conventions
   2.5   Kernel as a Traits Class
   2.6   Choosing a Kernel
   2.7   Inclusion of Header Files
3   Kernel Geometry
   3.1   Points and Vectors
   3.2   Kernel Objects
   3.3   Orientation and Relative Position
4   Predicates and Constructions
   4.1   Predicates
   4.2   Constructions
   4.3   Intersection and Polymorphic Return Values
   4.4   Constructive Predicates
5   Reference Pages
   5.1   Linear Algebra Concepts and Classes
   5.2   Kernel Objects
   5.3   Global Kernel Functions
   5.4   Kernel Concept


VII   Basic Library User Manual


VIII   Basic Library Reference Manual

1   2D Convex Hulls and Extreme Points
   1.1   Introduction
   1.2   Convex Hull
   1.3   Example using GrahamAndrew's algorithm
   1.4   Extreme Points and Hull Subsequences
   1.5   Traits Classes
   1.6   Convexity Checking
2   2D Convex Hulls and Extreme Points
3   3D Convex Hulls
   3.1   Introduction
   3.2   Static Convex Hull Construction
   3.3   Incremental Convex Hull Construction
   3.4   Dynamic Convex Hull Construction
4   3D Convex Hulls
5   dD Convex Hulls and Delaunay Triangulations
   5.1   Introduction
   5.2   dD Convex Hull
   5.3   Delaunay Triangulation
6   dD Convex Hulls and Delaunay Triangulations
7   Polygons and Polygon Operations
   7.1   Introduction
   7.2   Example
8   Polygons and Polygon Operations
9   Planar Polygon Partitioning
   9.1   Introduction
   9.2   Monotone Partitioning
   9.3   Convex Partitioning
10   Planar Polygon Partitioning
11   Planar Nef Polyhedra
   11.1   Introduction
   11.2   Construction and Composition
   11.3   Exploration
   11.4   Traits Classes
   11.5   Implementation
12   Planar Nef Polyhedra
13   Nef Polyhedra embedded on the Sphere
   13.1   Introduction
   13.2   Restricted Spherical Geometry
   13.3   Example Programs
14   Nef Polyhedra embedded on the Sphere
15   3D Nef Polyhedron
   15.1   Introduction
   15.2   Definition
   15.3   Infimaximal Box
   15.4   Regularized Set Operations
   15.5   Example Programs
   15.6   File I/O
   15.7   Further Example Programs
   15.8   Visualiation
16   3D Nef Polyhedron
17   Topological Maps
   17.1   Introduction
   17.2   Basic Terms and Software Design
   17.3   Example Programs
18   Topological Maps
19   2D Planar Maps
   19.1   Introduction
   19.2   Software Design
   19.3   Implementation
   19.4   Example Programs
20   2D Planar Maps
21   2D Planar Maps of Intersecting Curves
   21.1   Introduction
   21.2   Architecture
22   2D Planar Maps of Intersecting Curves
23   2D Arrangements
   23.1   Introduction
   23.2   Software Design
   23.3   Segment Arrangements
   23.4   Polyline Arrangements
   23.5   Arrangements of Conic Arcs
   23.6   User-defined Hierarchy
24   2D Arrangements
25   2D Sweep Line of Planar Curves
   25.1   Introduction
   25.2   Software Design
   25.3   Implementation
26   Sweep line
27   3D Polyhedral Surfaces
   27.1   Introduction
   27.2   Definition
   27.3   Example Programs
   27.4   File I/O
   27.5   Extending Vertices, Halfedges, and Facets
   27.6   Advanced Example Programs
28   3D Polyhedral Surfaces
29   Halfedge Data Structures
   29.1   Introduction
   29.2   Software Design
   29.3   Example Programs
30   Halfedge Data Structure
31   2D Triangulations
   31.1   Definitions
   31.2   Representation
   31.3   Software Design
   31.4   Basic Triangulations
   31.5   Delaunay Triangulations
   31.6   Regular Triangulations
   31.7   Constrained Triangulations
   31.8   Constrained Delaunay Triangulations
   31.9   Constrained Triangulations Plus
   31.10   The Triangulation Hierarchy
   31.11   Flexibility: Using Customized Vertices and Faces
   31.12   Design and Implementation History
32   2D Triangulations
33   2D Triangulation Data Structure
   33.1   Definition
   33.2   The Concept of Triangulation Data Structure
   33.3   The Default Triangulation Data Structure
34   2D Triangulation Data Structure
35   3D Triangulations
   35.1   Representation
   35.2   Delaunay Triangulation
   35.3   Regular Triangulation
   35.4   Triangulation hierarchy
   35.5   Software Design
   35.6   Examples
   35.7   Design and Implementation History
36   3D Triangulations
37   3D Triangulation Data Structure
   37.1   Representation
   37.2   Software Design
   37.3   Examples
   37.4   Design and Implementation History
38   3D Triangulation Data Structure
39   2D Alpha Shapes
   39.1   Definitions
   39.2   Functionality
   39.3   Concepts and Models
   39.4   Examples
40   2D Alpha Shapes
41   3D Alpha Shapes
   41.1   Definitions
   41.2   Functionality
   41.3   Concepts and Models
   41.4   Examples
42   3D Alpha Shapes
43   2D Segment Voronoi Diagrams
   43.1   Definitions
   43.2   Software Design
   43.3   The Geometric Traits
   43.4   The segment Voronoi diagram hierarchy
   43.5   Examples
44   2D Segment Voronoi Diagrams
45   2D Apollonius graphs
   45.1   Definitions
   45.2   Software Design
   45.3   The Geometric Traits
   45.4   The Apollonius graph hierarchy
   45.5   Examples
46   2D Apollonius graphs
47   2D Conforming Triangulations and Meshes
   47.1   Conforming Triangulations
   47.2   Meshes
48   2D Conforming Triangulations and Meshes
49   Interpolation
   49.1   Natural neighbor coordinates
   49.2   Surface natural neighbor coordinates and surface neighbors
   49.3   Interpolation methods
50   Interpolation
51   Geometric Optimisation
   51.1   Bounding and Inscribed Volumes
   51.2   Optimal Distances
   51.3   Advanced techniques
52   Geometric Optimisation
53   2D Search Structures
   53.1   Introduction
   53.2   Examples
54   2D Search Structures
55   Interval Skip List
   55.1   Definition
   55.2   Example Programs
56   Interval Skip List
57   Intersecting Sequences of Iso-oriented Boxes
   57.1   Introduction
   57.2   Definition
   57.3   Software Design
   57.4   Minimal Example for Intersecting Boxes
   57.5   Example for Finding Intersecting 3D Triangles
   57.6   Example for Using Pointers to Boxes
   57.7   Example Using the topology and the cutoff Parameters
   57.8   Runtime Performance
   57.9   Example Using a Custom Box Implementation
   57.10   Example for Point Proximity Search with a Custom Traits Class
   57.11   Design and Implementation History
58   Intersecting Sequences of Iso-oriented Boxes
59   dD Range and Segment Tree
   59.1   Introduction
   59.2   Definitions
   59.3   Software Design
   59.4   Creating an Arbitrary Multilayer Tree
   59.5   Range Trees
   59.6   Segment Trees
60   dD Range and Segment Tree
61   Spatial Searching
   61.1   Introduction
   61.2   Splitting Rules
   61.3   Example Programs
   61.4   Software Design
62   Spatial Searching


IX   Support Library User Manual


X   Support Library Reference Manual

1   Number Type Support
   1.1   Required Functionality of Number Types
   1.2   Utility Routines
   1.3   Built-in Number Types
   1.4   Number Types Provided by CGAL
   1.5   Number Type Provided by CORE
   1.6   Number Types Provided by GMP
   1.7   Number Types Provided by LEDA
   1.8   User-supplied Number Types
2   Number Type Support
3   STL Extensions for CGAL
4   Handles and Circulators
   4.1   Handles
   4.2   Circulators
5   Handles and Circulators
6   Geometric Object Generators
   6.1   Example Generating Degenerate Point Sets
   6.2   Example Generating Grid Points
   6.3   Examples Generating Segments
7   Geometric Object Generators
8   Timers, Hash Map, Union-find, Modifiers
   8.1   Timers
   8.2   Memory Size
   8.3   Unique Hash Map
   8.4   Union-find
   8.5   Protected Access to Internal Representations
9   Timers, Hash Map, Union-find, Modifiers
10   IO Streams
   10.1   Output Operator
   10.2   Input Operator
   10.3   Stream Support
11   IO Streams
12   Colors, Window streams, and Postscript Streams
   12.1   Introduction
   12.2   Window output
   12.3   Postscript output
13   Colors, Window streams, and Postscript Streams
14   Geomview
   14.1   Definition
   14.2   Implementation
   14.3   Example
15   Geomview
16   Qt_widget
   16.1   Introduction
   16.2   Qt_widget
   16.3   Layers
   16.4   The Standard Toolbar
   16.5   The Help Window
   16.6   Some Predefined Icons
   16.7   What Shall I Use?
17   Qt_widget