CGAL 6.1.1 - 3D Envelopes

Loading...
Searching...
No Matches
List of all members
CGAL::Env_plane_traits_3< Kernel, ArrLinearTraits > Class Template Reference
Reference Manual

`#include <CGAL/Env_plane_traits_3.h>`

## Inherits from

CGAL::Arr_linear_traits_2< typename Kernel >.

## Definition

template<typename Kernel, typename ArrLinearTraits = Arr_linear_traits_2<Kernel>>
class CGAL::Env_plane_traits_3< Kernel, ArrLinearTraits >

The traits class template `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.

When the template is instantiated, the template parameter `Kernel` must be substituted by a CGAL-kernel model, the number type of which 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.

The second template parameter, namely `ArrLinearTraits`, should be substituted by a 2D arrangement geometry traits class that supports unbounded linear objects, i.e, lines, rays, and segments. By default it is substituted by `Arr_linear_traits_2<Kernel>`.

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 traits class that substitutes `ArrLinearTraits`, 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.

## Additional Inherited Members
Public Types inherited from CGAL::Arr_linear_traits_2< typename Kernel >
typedef Kernel::Segment_2 | Segment_2
typedef Kernel::Ray_2 | Ray_2
typedef Kernel::Line_2 | Line_2
typedef Kernel::Point_2 | Point_2
typedef X_monotone_curve_2 | Curve_2
Public Member Functions inherited from CGAL::Arr_linear_traits_2< typename Kernel >
class CGAL::Arr_linear_traits_2::Trim_2 | trim_2_object () const