CGAL::Envelope_diagram_2<EnvTraits>

Definition

The class-template Envelope_diagram_2<EnvTraits> represents the minimization diagram that corresponds to the lower envelope of a set of curves, or the maximization diagram that corresponds to their upper envelope. It is parameterized by a traits class that must be a model of the EnvelopeTraits_3 concept, and is basically a planar arrangement of x-monotone curves, as defined by this traits class. These x-monotone curves are the projections of boundary curves of xy-monotone surfaces, or the intersection curves between such surfaces, onto the xy-plane. Thus, it is possible to traverse the envelope diagram using the methods inherited from the Arrangement_2 class.

The envelope diagram extends the arrangement features (namely the vertices, halfedges, and faces), such that each feature stores a container of originators - namely, the xy-monotone surfaces (instances of the type EnvTraits::Xy_monotone_surface_3) that induce the lower envelope (or the upper envelope, in case of a maximization diagram) over this feature. The envelope diagram provides access methods to these originators.

#include <CGAL/envelope_3.h>

Inherits From

Arrangement_2<EnvTraits>

Types

typedef Envelope_diagram_2<EnvTraits>
Self;
typedef Arrangement_2<EnvTraits> Base;

Envelope_diagram_2<EnvTraits>::Surface_const_iterator
an iterator for the xy-monotone surfaces that induce a diagram feature. Its value-type is EnvTraits::Xy_monotone_surface_3.

Creation

Envelope_diagram_2<EnvTraits> diag;
constructs an empty diagram containing one unbounded face, which corresponds to the entire plane and has no originators.


Envelope_diagram_2<EnvTraits> diag ( Self other);
copy constructor.


Envelope_diagram_2<EnvTraits> diag ( EnvTraits *traits);
constructs an empty diagram that uses the given traits instance for performing the geometric predicates.

Class Envelope_diagram_2<EnvTraits>::Vertex

Inherits From

Base::Vertex

Access Functions

size_t v.number_of_surfaces () const returns the number of xy-monotone surfaces that induce v.

Surface_const_iterator v.surfaces_begin () const returns an iterator for the first xy-monotone surface that induces v.
Surface_const_iterator v.surfaces_end () const returns a past-the-end iterator for the xy-monotone surfaces that induce v.

Xy_monotone_surface_3 v.surface () const returns the first xy-monotone surface that induce v.
Precondition: The number of surfaces is not 0.

Class Envelope_diagram_2<EnvTraits>::Halfedge

Inherits From

Base::Halfedge

Access Functions

size_t e.number_of_surfaces () const returns the number of xy-monotone surfaces that induce e.

Surface_const_iterator e.surfaces_begin () const returns an iterator for the first xy-monotone surface that induces e.
Surface_const_iterator e.surfaces_end () const returns a past-the-end iterator for the xy-monotone surfaces that induce e.

Xy_monotone_surface_3 e.surface () const returns the first xy-monotone surface that induce e.
Precondition: The number of surfaces is not 0.

Class Envelope_diagram_2<EnvTraits>::Face

Inherits From

Base::Face

Access Functions

size_t f.number_of_surfaces () const returns the number of xy-monotone surfaces that induce f.

Surface_const_iterator f.surfaces_begin () const returns an iterator for the first xy-monotone surface that induces f.
Surface_const_iterator f.surfaces_end () const returns a past-the-end iterator for the xy-monotone surfaces that induce f.

Xy_monotone_surface_3 f.surface () const returns the first xy-monotone surface that induce f.
Precondition: The number of surfaces is not 0.