/// \defgroup PkgInterpolation2Ref Reference Manual

/// \defgroup PkgInterpolation2Concepts Concepts
/// \ingroup PkgInterpolation2Ref

/// \defgroup PkgInterpolation2Interpolation Interpolation Functions
/// \ingroup PkgInterpolation2Ref

/// \defgroup PkgInterpolation2NatNeighbor Natural Neighbor Coordinate Computation
/// \ingroup PkgInterpolation2Ref

/// \defgroup PkgInterpolation2SurfaceNeighbor Surface Neighbor and Surface Neighbor Coordinate Computation
/// \ingroup PkgInterpolation2Ref

/*!
\addtogroup PkgInterpolation2Ref
\cgalPkgDescriptionBegin{2D and Surface Function Interpolation,PkgInterpolation2}
\cgalPkgPicture{interpolation.png}
\cgalPkgSummaryBegin
\cgalPkgAuthor{Julia Flötotto}
\cgalPkgDesc{This package implements different methods for scattered data interpolation:
Given measures of a function on a set of discrete data points, the task is to interpolate
this function on an arbitrary query point. The package further offers functions for natural neighbor interpolation.}
\cgalPkgManuals{Chapter_2D_and_Surface_Function_Interpolation,PkgInterpolation2Ref}
\cgalPkgSummaryEnd
\cgalPkgShortInfoBegin
\cgalPkgSince{3.1}
\cgalPkgBib{cgal:f-i}
\cgalPkgLicense{\ref licensesGPL "GPL"}
\cgalPkgShortInfoEnd
\cgalPkgDescriptionEnd

Scattered data interpolation solves the following problem: given
measures of a function on a set of discrete data points, the task is
to interpolate this function on an arbitrary query point.

If the function is a linear function and given barycentric coordinates
that allow to express the query point as the convex combination of
some data points, the function can be exactly interpolated. If the
function gradients are known, we can exactly interpolate quadratic
functions given barycentric coordinates. Any further properties of
these interpolation functions depend on the properties of the
barycentric coordinates. They are provided in this package under the
names `linear_interpolation()` and `quadratic_interpolation()`.

\cgalCRPSection{Natural Neighbor Interpolation}

Natural neighbor coordinates are defined by Sibson in 1980 and are based on the Voronoi
diagram of the data points. Interpolation methods based on natural
neighbor coordinates are particularly interesting because they adapt
easily to non-uniform and highly anisotropic data.
This package contains Sibson's \f$ C^1\f$ continuous interpolation method which
interpolates exactly spherical quadrics (of the form
\f$ \Phi(\mathbf{x})= a + \mathbf{b}^t \mathbf{x} +\gamma\ \mathbf{x}^t\mathbf{x}\f$)
and Farin's \f$ C^1\f$ continuous interpolation method based on
Bernstein-B&eacute;zier techniques and interpolating exactly quadratic
functions - assuming that the function gradient is known.
In addition, Sibson defines a method to approximate the function
gradients for data points that are in the interior of the convex hull.
This method is exact for spherical quadrics.

This \cgal package provides functions to compute the natural neighbor
coordinates with respect to a two-dimensional Voronoi diagram (i. e.,
from the Delaunay triangulation of the data points) and to a
two-dimensional power diagram for weighted points (i. e., from their
regular triangulation). Natural neighbor coordinates on closed and
well-sampled surfaces can also be computed if the normal to the
surface at the query point is known. The latter coordinates are only
approximately barycentric, see \cgalCite{bf-lcss-02}.
Furthermore, it implements Sibson's and Farin's interpolation
functions as well as Sibson's function gradient fitting method.
For a more thorough introduction, see the \link Chapter_2D_and_Surface_Function_Interpolation
User Manual \endlink.

\cgalClassifedRefPages

\cgalCRPSection{Concepts}
- `InterpolationTraits`
- `GradientFittingTraits`

\cgalCRPSection{Interpolation Functions}
- `CGAL::linear_interpolation()`
- `CGAL::sibson_c1_interpolation()`
- `CGAL::farin_c1_interpolation()`
- `CGAL::quadratic_interpolation()`
- `CGAL::sibson_gradient_fitting()`

- `CGAL::Interpolation_traits_2<K>`
- `CGAL::Interpolation_gradient_fitting_traits_2<K>`

\cgalCRPSection{Natural Neighbor Coordinate Computation}
- `CGAL::natural_neighbor_coordinates_2()`
- `CGAL::regular_neighbor_coordinates_2()`

\cgalCRPSection{Surface Neighbor and Surface Neighbor Coordinate Computation}
- `CGAL::Voronoi_intersection_2_traits_3<K>`
- `CGAL::surface_neighbor_coordinates_3()`
- `CGAL::surface_neighbors_3()`

*/

