\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.3 - 3D Envelopes

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members | Classes
CGAL::Env_surface_data_traits_3< Traits, XyData, SData, Cnv > Class Template Reference
3D Envelopes Reference

`#include <CGAL/Env_surface_data_traits_3.h>`

## Inherits from

Traits.

## Definition

The class `Env_surface_data_traits_3` is a model of the `EnvelopeTraits_3` concept and serves as a decorator class that allows the extension of the surfaces defined by the base traits-class (the `Traits` parameter), which serves as a geometric traits-class (a model of the `EnvelopeTraits_3` concept), with extraneous (non-geometric) data fields.

The traits-class decorator extends the `Surface_3` and the `Xy_monotone_surface_3` types as detailed below. Each `Surface_3` object is associated with a single data field of type `SData`, and each `Xy_monotone_surface_3` object is associated with a single data field of type `XyData`. When a surface is subdivided into \( xy\)-monotone surfaces, its data field is converted using the conversion functor, which is specified by the `Cnv` template-parameter, and the resulting objects is copied to all `Xy_monotone_surface_3` objects induced by this surface. The conversion functor should provide an operator with the following prototype:

`XyData operator() (const SData& d) const;`

By default, the two data types are the same, so the conversion operator is trivial and just copies the data object:

`SData` = | `XyData`
`Cnv` = | `_Default_convert_functor<SData,XyData>`

Is Model Of:
  `EnvelopeTraits_3`

Examples:
  Envelope_3/envelope_triangles.cpp.

## Classes
class | Surface_3
| The `Surface_3` class nested within the surface-data traits extends the `Base_traits_3::Surface_3` type with an extra data field. More...
class | Xy_monotone_surface_3
| The `Xy_monotone_surface_3` class nested within the surface-data traits extends the `Base_traits_3::Xy_monotone_surface_3` type with an extra data field. More...

## Types
typedef Traits | Base_traits_3
| the base traits-class.
typedef Base_traits_3::Surface_3 | Base_surface_3
| the base surface.
typedef Base_traits_3::Xy_monotone_surface_3 | Base_xy_monotone_surface_3
| the base \( xy\)-monotone surface surface.
typedef Cnv | Convert
| the conversion functor.
typedef SData | Surface_data
| the type of data associated with surfaces.
typedef XyData | Xy_monotone_surface_data
| the type of data associated with \( xy\)-monotone surfaces.