## CGAL::Env_plane_traits_3<Kernel>

### Definition

The traits class *Env_plane_traits_3<Kernel>* models the *EnvelopeTraits_3* concept,
and is used for the construction of lower and upper envelopes of planes
and half planes in the space. It is parameterized by a CGAL-kernel model,
which is parameterized in turn by a number type. The number type should
support exact rational arithmetic, to avoid numerical errors and
robustness problems. In particular, the number type should support the
arithmetic operations $$*+*, $$*-*, $$* × *, and $$* ÷ * without loss of
precision. For optimal performance, we recommend instantiating the traits
class with the predefined
*Exact_predicates_exact_constructions_kernel* provided by CGAL.
Using this kernel guarantees exactness and robustness, while it incurs
only a minor overhead (in comparison to working with a fast, inexact number
type) for most inputs.

Note that an entire plane has no boundaries, and the projection of a
half-plane is an (unbounded) line. Naturally, rays and segments may occur as
a result of overlaying projections of several half planes. Indeed,
*Env_plane_traits_3<Kernel>* inherits from the *Arr_linear_traits_2<Kernel>* traits
class, and extends it by adding operations on planes and half planes.
The nested *Xy_monotone_surface_3* and *Surface_3* types refer
to the same type. They are constructible from a *Kernel::Plane_3*
in case of an entire plane, or from *Kernel::Plane_3* and
*Kernel::Line_2* in case of a half-plane. The line orientation
determines which half is considered.

*#include <CGAL/Env_plane_traits_3.h>*

### Is Model for the Concepts

*EnvelopeTraits_3*

### Inherits From

*Arr_linear_traits_2<Kernel>*