\( \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.8 - 3D Envelopes

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
CGAL::Env_sphere_traits_3< ConicTraits > Class Template Reference
3D Envelopes Reference

`#include <CGAL/Env_sphere_traits_3.h>`

## Inherits from

ConicTraits.

## Definition

The traits class `Env_sphere_traits_3` models the `EnvelopeTraits_3` concept, and is used for the construction of lower and upper envelopes of spheres.

Note that when projecting the intersection curve of two spheres (a circle in 3D) onto the \( xy\)-plane, the resulting curve is an ellipse. The traits class is therefore parameterized by an arrangement-traits class that is capable of handling conic curves - namely an instantiation of the `Arr_conic_traits_2` class-template - and inherits from it.

The conic-traits class defines a nested type named `Rat_kernel`, which is a geometric kernel parameterized by an exact rational type. `Env_sphere_traits_3` defines its `Surface_3` type to be constructible from `Rat_kernel::Sphere_3`. Namely, it can handle spheres whose center points have rational coordinates (i.e., of the type `Rat_kernel::FT`), and whose squared radius is also rational. The `Surface_3` type is also convertible to a `Rat_kernel::Sphere_3` object.

The `Xy_monotone_surface_3` type is the same as the nested `Surface_3` type. The traits-class simply ignores the upper hemisphere when it computes lower envelopes, and ignores the lower hemisphere when it computes upper envelopes.

Is Model Of:
  `EnvelopeTraits_3`

Examples:
  Envelope_3/envelope_spheres.cpp.