/// \defgroup PkgAlphaShapes3Ref Reference Manual
/// \defgroup PkgAlphaShapes3Concepts Concepts
/// \ingroup PkgAlphaShapes3Ref
/*!
\addtogroup PkgAlphaShapes3Ref
\cgalPkgDescriptionBegin{3D Alpha Shapes,PkgAlphaShapes3}
\cgalPkgPicture{alpha_shapes_3_small.png}
\cgalPkgSummaryBegin
\cgalPkgAuthors{Tran Kai Frank Da, Sébastien Loriot, and Mariette Yvinec}
\cgalPkgDesc{This package offers a data structure encoding either one alpha-complex or the whole family of alpha-complexes related to a given 3D Delaunay or regular triangulation. In the latter case, the data structure allows to retrieve   the alpha-complex for any alpha value, the whole spectrum of critical alpha values and a filtration on the triangulation faces (this filtration is based on the first  alpha value for which each face is included on the alpha-complex). }
\cgalPkgManuals{Chapter_3D_Alpha_Shapes,PkgAlphaShapes3Ref}
\cgalPkgSummaryEnd
\cgalPkgShortInfoBegin
\cgalPkgSince{2.3}
\cgalPkgDependsOn{\ref PkgTriangulation3}
\cgalPkgBib{cgal:dy-as3}
\cgalPkgLicense{\ref licensesGPL  "GPL"}
\cgalPkgDemo{3D Alpha Shapes,alpha_shape_3.zip}
\cgalPkgShortInfoEnd
\cgalPkgDescriptionEnd

Alpha shapes definition is based on an underlying
triangulation that may be a Delaunay triangulation
in case of basic alpha shapes or a regular triangulation
(cf. Section \ref Triangulation3secclassRegulartriangulation "3D Regular Triangulation")
in case of weighted alpha shapes.

Let us consider the basic case with a Delaunay triangulation.
We first define the alpha complex  of the set of points \f$ S\f$.
The  alpha complex is a subcomplex
of the Delaunay triangulation.
For a given value of \f$ \alpha\f$, the alpha complex includes
all the simplices in the Delaunay triangulation which have
an empty  circumscribing sphere with squared radius equal or smaller than \f$ \alpha\f$.
Here "empty" means  that the open sphere
do not include  any points of \f$ S\f$.
The alpha shape is then simply the domain covered by the simplices
of the alpha complex (see \cgalCite{em-tdas-94}).

In general, an alpha complex is a non-connected and non-pure complex.
This means in particular that the alpha complex may have
singular faces.  For \f$ 0 \leq k \leq d-1\f$,
a \f$ k\f$-simplex of the alpha complex  is said to be
singular if it is not a facet of a \f$ (k+1)\f$-simplex of the complex

The alpha shapes of a  set of points
\f$ S\f$ form a discrete family, even though they
are defined for all real numbers \f$ \alpha\f$.
The entire family of alpha shapes can be represented
through  the underlying triangulation of \f$ S\f$. In this representation,
each \f$ k\f$-simplex of the underlying triangulation is associated with an
interval that specifies for which values of \f$ \alpha\f$ the \f$ k\f$-simplex
belongs to the alpha complex. Relying on this fact, the family of
 alpha shapes can be computed efficiently and relatively
easily. Furthermore, we can select the optimal value
of  \f$ \alpha\f$ to get an alpha shape including all data points
and having   less than a given number of connected components.

The definition is analog in the case of weighted alpha shapes.
The input set is now a set of weighted points (which can be regarded
as spheres) and the underlying triangulation
is the regular triangulation of this set.
Two spheres, or two weighted points, with centers \f$ C_1, C_2\f$
and  radii \f$ r_1, r_2 \f$ are said to be orthogonal iff
\f$  C_1C_2 ^2 = r_1^2 + r_2^2\f$ and suborthogonal
iff  \f$  C_1C_2 ^2 < r_1^2 + r_2^2\f$.
For a given value of \f$ \alpha\f$
the weighted alpha complex is formed with the simplices of the
regular triangulation triangulation
such that there is a sphere orthogonal to the weighted points associated
with the vertices of the simplex  and suborthogonal to all the other
input weighted points. Once again the alpha shape is then defined as
the domain covered by a the alpha complex.

CGAL provides two versions to compute alpha shapes.
The first one gives access to an explicit classification of all the simplices for a fixed alpha value.
The second one gives access to the entire family of alpha shapes of a set of points.
This latter version comes with two modes. In the general mode,
the alpha shapes correspond strictly to the definition previously made.
The regularized mode provides a regularized version of the alpha shapes
corresponding to the domain covered by a regularized version
of the alpha complex where singular faces are removed.

\cgalClassifedRefPages

\cgalCRPSection{Concepts}
- `AlphaShapeTraits_3`
- `WeightedAlphaShapeTraits_3`
- `AlphaShapeCell_3`
- `AlphaShapeVertex_3`
- `FixedAlphaShapeTraits_3`
- `FixedWeightedAlphaShapeTraits_3`
- `FixedAlphaShapeCell_3`
- `FixedAlphaShapeVertex_3`

\cgalCRPSection{Classes}
- `CGAL::Alpha_status<NT>`
- `CGAL::Alpha_shape_3<Dt,ExactAlphaComparisonTag>`
- `CGAL::Alpha_shape_vertex_base_3<Traits,Vb>`
- `CGAL::Alpha_shape_cell_base_3<Traits,Fb>`

- `CGAL::Fixed_alpha_shape_3<Dt>`
- `CGAL::Fixed_alpha_shape_vertex_base_3<Traits,Vb>`
- `CGAL::Fixed_alpha_shape_cell_base_3<Traits,Fb>`

*/

