\( \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.5 - 3D Envelopes
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
CGAL::Env_plane_traits_3< Kernel > Class Template Reference

#include <CGAL/Env_plane_traits_3.h>

Inherits from

CGAL::Arr_linear_traits_2< Kernel >.

Definition

The traits class Env_plane_traits_3 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 \( +\), \( -\), \( \times\), and \( \div\) 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 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.

Is Model Of:
EnvelopeTraits_3
Examples:
Envelope_3/envelope_planes.cpp.