mirror of https://github.com/CGAL/cgal
Doc improvements
This commit is contained in:
parent
0f787d4b28
commit
10c073b8df
|
|
@ -66,26 +66,27 @@ std::pair<Data_type, bool> operator()(const Key_type& p);
|
|||
The function `linear_interpolation()` computes the weighted sum of the function
|
||||
values which must be provided via a functor.
|
||||
|
||||
\tparam CoordinateIterator must be a model of `ForwardIterator` and
|
||||
\tparam CoordinateInputIterator must be a model of `ForwardIterator` and
|
||||
must have as value type a pair associating an entity, e.g. the `Vertex_handle` or `Point`
|
||||
types of a triangulation, to a (non-normalized) barycentric coordinate.
|
||||
\tparam ValueFunctor must be a functor such that `ValueFunctor::result_type`
|
||||
is a pair of the function value type and a Boolean value.
|
||||
The function value type must provide a multiplication and addition operation with the field number type
|
||||
`std::iterator_traits<CoordinateIterator>::%value_type::second_type` and a constructor
|
||||
with argument `0`. <br>
|
||||
A model of this functor is provided by the struct `CGAL::Data_access` instantiated
|
||||
\tparam ValueFunctor must be a functor where `ValueFunctor::argument_type` must be equivalent to
|
||||
`std::iterator_traits<CoordinateInputIterator>::%value_type::first_type` and
|
||||
`ValueFunctor::result_type` is a pair of the function value type and a Boolean.
|
||||
The function value type must provide a multiplication and addition operation with the type
|
||||
`Traits::FT` as well as a constructor with argument `0`.
|
||||
|
||||
A model of the functor `ValueFunctor` is provided by the struct `CGAL::Data_access` instantiated
|
||||
with an associative container (e.g. `std::map`) and having:
|
||||
- `std::iterator_traits<CoordinateIterator>::%value_type::first_type` (the entity type) as `key_type`
|
||||
- `std::iterator_traits<CoordinateIterator>::%value_type::second_type` (the coordinate type) as `mapped_type`.
|
||||
- `std::iterator_traits<CoordinateInputIterator>::%value_type::first_type` (the entity type) as `key_type`
|
||||
- `std::iterator_traits<CoordinateInputIterator>::%value_type::second_type` (the coordinate type) as `mapped_type`.
|
||||
|
||||
The two template parameters must satisfy the following conditions:
|
||||
- `std::iterator_traits<CoordinateIterator>::%value_type::first_type` (the entity type) is equivalent to a
|
||||
- `std::iterator_traits<CoordinateInputIterator>::%value_type::first_type` (the entity type) is equivalent to a
|
||||
`ValueFunctor::argument_type`.
|
||||
- `std::iterator_traits<CoordinateIterator>::%value_type::second_type` (the coordinate type) is a field number type
|
||||
- `std::iterator_traits<CoordinateInputIterator>::%value_type::second_type` (the coordinate type) is a field number type
|
||||
that is equivalent to `ValueFunctor::result_type::first_type`.
|
||||
|
||||
For example, if `CoordinateIterator` is an output iterator with value type
|
||||
For example, if `CoordinateInputIterator` is an iterator with value type
|
||||
`std::pair<Vertex_handle, double>`, then the `ValueFunctor` must have argument
|
||||
type `Vertex_handle` (or convertible to) and return type `std::pair<double, bool>`.
|
||||
|
||||
|
|
@ -105,10 +106,10 @@ corresponding to each entry of the entity/coordinate pairs in the range `[first,
|
|||
\sa `PkgInterpolationRegularNeighborCoordinates2`
|
||||
\sa `PkgInterpolationSurfaceNeighborCoordinates3`
|
||||
*/
|
||||
template < class CoordinateIterator, class ValueFunctor >
|
||||
template < class CoordinateInputIterator, class ValueFunctor >
|
||||
typename ValueFunctor::result_type::first_type
|
||||
linear_interpolation(CoordinateIterator first, CoordinateIterator beyond,
|
||||
const typename std::iterator_traits<CoordinateIterator>::value_type::second_type& norm,
|
||||
linear_interpolation(CoordinateInputIterator first, CoordinateInputIterator beyond,
|
||||
const typename std::iterator_traits<CoordinateInputIterator>::value_type::second_type& norm,
|
||||
ValueFunctor value_function);
|
||||
|
||||
/*!
|
||||
|
|
@ -126,30 +127,30 @@ Otherwise, the second value will be `false`.
|
|||
\tparam Traits must be a model of `InterpolationTraits`.
|
||||
Note that, contrary to some other interpolation methods, the number type `FT` provided
|
||||
by `Traits` does not need to provide the square root operation.
|
||||
\tparam CoordinateIterator must be a model of `ForwardIterator` and must have as
|
||||
\tparam CoordinateInputIterator must be a model of `ForwardIterator` and must have as
|
||||
value type a pair associating an entity to a (non-normalized) barycentric coordinate.
|
||||
More precisely, `std::iterator_traits<CoordinateIterator>::%value_type::first_type`
|
||||
More precisely, `std::iterator_traits<CoordinateInputIterator>::%value_type::first_type`
|
||||
can be of the following types:
|
||||
<ul>
|
||||
<li> a type equivalent to `Traits::Point_d` or `Traits::Weighted_point_d` </li>
|
||||
<li> an iterator type providing a `point()` function returning a type equivalent to `Traits::Point_d` or `Traits::Weighted_point_d`; </li>
|
||||
</ul>
|
||||
and `std::iterator_traits<CoordinateIterator>::%value_type::second_type` must be equivalent to
|
||||
and `std::iterator_traits<CoordinateInputIterator>::%value_type::second_type` must be equivalent to
|
||||
`Traits::FT`.
|
||||
\tparam ValueFunctor must be a functor where `ValueFunctor::argument_type` must be equivalent to
|
||||
`std::iterator_traits<CoordinateIterator>::%value_type::first_type` and
|
||||
`std::iterator_traits<CoordinateInputIterator>::%value_type::first_type` and
|
||||
`ValueFunctor::result_type` is a pair of the function value type and a Boolean.
|
||||
The function value type must provide a multiplication and addition operation with the type
|
||||
`Traits::FT` as well as a constructor with argument `0`.
|
||||
\tparam GradFunctor must be a functor where `GradFunctor::argument_type` must be equivalent to
|
||||
`std::iterator_traits<CoordinateIterator>::%value_type::first_type` and
|
||||
`std::iterator_traits<CoordinateInputIterator>::%value_type::first_type` and
|
||||
`Functor::result_type` is a pair of the function's gradient type and a Boolean.
|
||||
The function gradient type must provide a multiplication operation with `Traits::Vector_d`.
|
||||
\tparam Point must be equivalent to `Traits::Point_d` or `Traits::Weighted_point_d`.
|
||||
|
||||
A model of the functor types `ValueFunctor` (resp. `GradFunctor`) is provided
|
||||
by the struct `CGAL::Data_access`. It must be instantiated accordingly with an associative container
|
||||
(e.g. `std::map`) having `std::iterator_traits<CoordinateIterator>::%value_type::first_type` as `key_type`
|
||||
(e.g. `std::map`) having `std::iterator_traits<CoordinateInputIterator>::%value_type::first_type` as `key_type`
|
||||
and the function value type (resp. the function gradient type) as `mapped_type`.
|
||||
|
||||
\param first, beyond is the iterator range of the barycentric coordinates for the query point `p`.
|
||||
|
|
@ -170,10 +171,10 @@ the function returns a pair where the Boolean is set to `false`.
|
|||
\sa `PkgInterpolationRegularNeighborCoordinates2`
|
||||
\sa `PkgInterpolationSurfaceNeighborCoordinates3`
|
||||
*/
|
||||
template < class CoordinateIterator, class ValueFunctor, class GradFunctor, class Traits, class Point >
|
||||
template < class CoordinateInputIterator, class ValueFunctor, class GradFunctor, class Traits, class Point >
|
||||
typename ValueFunctor::result_type
|
||||
quadratic_interpolation(CoordinateIterator first, CoordinateIterator beyond,
|
||||
const typename std::iterator_traits<CoordinateIterator>::value_type::second_type& norm,
|
||||
quadratic_interpolation(CoordinateInputIterator first, CoordinateInputIterator beyond,
|
||||
const typename std::iterator_traits<CoordinateInputIterator>::value_type::second_type& norm,
|
||||
const Point& p,
|
||||
ValueFunctor value_function,
|
||||
GradFunctor gradient_function,
|
||||
|
|
@ -192,30 +193,30 @@ Otherwise, `false` is returned as second value.
|
|||
|
||||
\tparam Traits must be a model of `InterpolationTraits`.
|
||||
The number type `FT` provided by `Traits` must support the square root operation `sqrt()`.
|
||||
\tparam CoordinateIterator must be a model of `ForwardIterator` and must have as
|
||||
\tparam CoordinateInputIterator must be a model of `ForwardIterator` and must have as
|
||||
value type a pair associating an entity to a (non-normalized) barycentric coordinate.
|
||||
More precisely, `std::iterator_traits<CoordinateIterator>::%value_type::first_type`
|
||||
More precisely, `std::iterator_traits<CoordinateInputIterator>::%value_type::first_type`
|
||||
can be of the following types:
|
||||
<ul>
|
||||
<li> a type equivalent to `Traits::Point_d` or `Traits::Weighted_point_d` </li>
|
||||
<li> an iterator type providing a `point()` function returning a type equivalent to `Traits::Point_d` or `Traits::Weighted_point_d`; </li>
|
||||
</ul>
|
||||
and `std::iterator_traits<CoordinateIterator>::%value_type::second_type` must be equivalent to
|
||||
and `std::iterator_traits<CoordinateInputIterator>::%value_type::second_type` must be equivalent to
|
||||
`Traits::FT`.
|
||||
\tparam ValueFunctor must be a functor where `ValueFunctor::argument_type` must be equivalent to
|
||||
`std::iterator_traits<CoordinateIterator>::%value_type::first_type` and
|
||||
`std::iterator_traits<CoordinateInputIterator>::%value_type::first_type` and
|
||||
`ValueFunctor::result_type` is a pair of the function value type and a Boolean.
|
||||
The function value type must provide a multiplication and addition operation with the type
|
||||
`Traits::FT` as well as a constructor with argument `0`.
|
||||
\tparam GradFunctor must be a functor where `GradFunctor::argument_type` must be equivalent to
|
||||
`std::iterator_traits<CoordinateIterator>::%value_type::first_type` and
|
||||
`std::iterator_traits<CoordinatetCoordinateInputIteratorIterator>::%value_type::first_type` and
|
||||
`Functor::result_type` is a pair of the function's gradient type and a Boolean.
|
||||
The function gradient type must provide a multiplication operation with `Traits::Vector_d`.
|
||||
\tparam Point must be equivalent to `Traits::Point_d` or `Traits::Weighted_point_d`.
|
||||
|
||||
A model of the functor types `ValueFunctor` (resp. `GradFunctor`) is provided
|
||||
by the struct `CGAL::Data_access`. It must be instantiated accordingly with an associative container
|
||||
(e.g. `std::map`) having `std::iterator_traits<CoordinateIterator>::%value_type::first_type` as `key_type`
|
||||
(e.g. `std::map`) having `std::iterator_traits<CoordinateInputIterator>::%value_type::first_type` as `key_type`
|
||||
and the function value type (resp. the function gradient type) as `mapped_type`.
|
||||
|
||||
\param first, beyond is the iterator range of the barycentric coordinates for the query point `p`.
|
||||
|
|
@ -236,10 +237,10 @@ the function returns a pair where the Boolean is set to `false`.
|
|||
\sa `PkgInterpolationRegularNeighborCoordinates2`
|
||||
\sa PkgInterpolationSurfaceNeighborCoordinates3
|
||||
*/
|
||||
template < class ForwardIterator, class ValueFunctor, class GradFunctor, class Traits, class Point >
|
||||
template < class CoordinateInputIterator, class ValueFunctor, class GradFunctor, class Traits, class Point >
|
||||
std::pair<typename ValueFunctor::result_type, bool>
|
||||
sibson_c1_interpolation(CoordinateIterator first, CoordinateIterator beyond,
|
||||
const typename std::iterator_traits<CoordinateIterator>::value_type::second_type& norm,
|
||||
sibson_c1_interpolation(CoordinateInputIterator first, CoordinateInputIterator beyond,
|
||||
const typename std::iterator_traits<CoordinateInputIterator>::value_type::second_type& norm,
|
||||
const Point& p,
|
||||
ValueFunctor value_function,
|
||||
GradFunctor gradient_function,
|
||||
|
|
@ -248,15 +249,15 @@ sibson_c1_interpolation(CoordinateIterator first, CoordinateIterator beyond,
|
|||
/*!
|
||||
\ingroup PkgInterpolation2Interpolation
|
||||
|
||||
The same as `sibson_c1_interpolation()`, except that no square root operation is required
|
||||
Same as `sibson_c1_interpolation()`, except that no square root operation is required
|
||||
for the number type `Traits::FT`.
|
||||
|
||||
\sa `CGAL::sibson_c1_interpolation()`
|
||||
*/
|
||||
template < class CoordinateIterator, class ValueFunctor, class GradFunctor, class Traits, class Point >
|
||||
template < class CoordinateInputIterator, class ValueFunctor, class GradFunctor, class Traits, class Point >
|
||||
typename ValueFunctor::result_type
|
||||
sibson_c1_interpolation_square(CoordinateIterator first, CoordinateIterator beyond,
|
||||
const typename std::iterator_traits<CoordinateIterator>::value_type::second_type& norm,
|
||||
sibson_c1_interpolation_square(CoordinateInputIterator first, CoordinateInputIterator beyond,
|
||||
const typename std::iterator_traits<CoordinateInputIterator>::value_type::second_type& norm,
|
||||
const Point& p,
|
||||
ValueFunctor value_function,
|
||||
GradFunctor gradient_function,
|
||||
|
|
@ -265,7 +266,7 @@ sibson_c1_interpolation_square(CoordinateIterator first, CoordinateIterator beyo
|
|||
/*!
|
||||
\ingroup PkgInterpolation2Interpolation
|
||||
|
||||
generates the interpolated function value computed by Farin's interpolant.
|
||||
Generates the interpolated function value computed by Farin's interpolant.
|
||||
|
||||
\cgalHeading{Requirements}
|
||||
|
||||
|
|
@ -279,10 +280,10 @@ gradients that are provided by functors using the method described in \cgalCite{
|
|||
|
||||
\sa `CGAL::sibson_c1_interpolation()`
|
||||
*/
|
||||
template < class CoordinateIterator, class ValueFunctor, class GradFunctor, class Traits, class Point>
|
||||
template < class CoordinateInputIterator, class ValueFunctor, class GradFunctor, class Traits, class Point>
|
||||
typename ValueFunctor::result_type
|
||||
farin_c1_interpolation(CoordinateIterator first, CoordinateIterator beyond,
|
||||
const typename std::iterator_traits<CoordinateIterator>::value_type::second_type& norm,
|
||||
farin_c1_interpolation(CoordinateInputIterator first, CoordinateInputIterator beyond,
|
||||
const typename std::iterator_traits<CoordinateInputIterator>::value_type::second_type& norm,
|
||||
const Point& p,
|
||||
ValueFunctor value_function,
|
||||
GradFunctor gradient_function,
|
||||
|
|
|
|||
|
|
@ -51,17 +51,15 @@ must then have value type `std::pair<Dt::Point, Dt::Geom_traits::FT>`.
|
|||
/// @{
|
||||
|
||||
/*!
|
||||
computes the natural neighbor coordinates for `p` with respect to the points
|
||||
Computes the natural neighbor coordinates for `p` with respect to the points
|
||||
in the two-dimensional Delaunay triangulation `dt`.
|
||||
|
||||
\tparam Dt must be of type `Delaunay_triangulation_2<Traits, Tds>`.
|
||||
`Traits` must be a model of the concepts `DelaunayTriangulationTraits_2` and `PolygonTraits_2`.
|
||||
\tparam CoordinateOutputIterator must be a model of `OutputIterator` and have the value type OutputFunctor::result_type.
|
||||
\tparam CoordinateOutputIterator must be a model of `OutputIterator` and have the value type `OutputFunctor::result_type`.
|
||||
The output computed by the function is placed starting at `out`.
|
||||
\tparam OutputFunctor must be a functor with argument type `std::pair<Dt::Vertex_handle, Dt::Geom_traits::FT>`.
|
||||
|
||||
See \link PkgInterpolationNaturalNeighborCoordinates2 above \endlink
|
||||
for a detailed explanation on the usage of `OutputFunctor`.
|
||||
See \link PkgInterpolationNaturalNeighborCoordinates2 above \endlink for a detailed explanation on the usage of `OutputFunctor`.
|
||||
|
||||
\param dt is the Delaunay triangulation.
|
||||
\param p is the query point.
|
||||
|
|
@ -70,7 +68,7 @@ for a detailed explanation on the usage of `OutputFunctor`.
|
|||
\param start is an optional argument that is used as a hint of where the locate process has to start its search.
|
||||
|
||||
\return A triple consisting of:
|
||||
- a sequence of object of types OutputFunctor::result_type, starting at `out`.
|
||||
- a sequence of objects of types `OutputFunctor::result_type`, starting at `out`.
|
||||
- the normalization factor of the coordinates.
|
||||
- a Boolean value which is set to `true` if the coordinate computation was successful,
|
||||
and `false` otherwise.
|
||||
|
|
@ -84,7 +82,7 @@ natural_neighbor_coordinates_2(const Dt& dt,
|
|||
typename Dt::Face_handle start = typename Dt::Face_handle());
|
||||
|
||||
/*!
|
||||
computes the natural neighbor coordinates for `p` with respect to the points
|
||||
Computes the natural neighbor coordinates for `p` with respect to the points
|
||||
in the two-dimensional Delaunay triangulation `dt`.
|
||||
|
||||
The iterator range `[hole_begin, hole_end)` determines the boundary edges
|
||||
|
|
@ -104,7 +102,7 @@ natural_neighbor_coordinates_2(const Dt& dt,
|
|||
EdgeIterator hole_begin, EdgeIterator hole_end);
|
||||
|
||||
/*!
|
||||
computes the natural neighbor coordinates of the point `vh->point()`
|
||||
Computes the natural neighbor coordinates of the point `vh->point()`
|
||||
with respect to the vertices of `dt` excluding `vh->point()`.
|
||||
|
||||
\cgalHeading{Requirements}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ computed and the third value of the result triple is set to `false`.
|
|||
\cgalHeading{Output Format}
|
||||
|
||||
The return type is identical for all overloads of `CGAL::regular_neighbor_coordinates_2()`:
|
||||
it is `CGAL::Triple<CoordinateIterator, Rt::Geom_traits::FT, bool >`
|
||||
it is `CGAL::Triple<CoordinateOutputIterator, Rt::Geom_traits::FT, bool >`
|
||||
|
||||
Regular neighbor coordinates are output in the first value of the triple,
|
||||
using an output iterator (see the concept `OutputIterator`).
|
||||
|
|
@ -51,12 +51,12 @@ must then have value type `std::pair<Rt::Weighted_point, Rt::Geom_traits::FT>`.
|
|||
/// @{
|
||||
|
||||
/*!
|
||||
computes the regular neighbor coordinates for `p` with respect
|
||||
Computes the regular neighbor coordinates for `p` with respect
|
||||
to the weighted points in the two-dimensional regular triangulation `rt`.
|
||||
|
||||
\tparam Rt must be a `Regular_triangulation_2<Traits, Tds>`.
|
||||
`Traits` must be a model of the concepts `RegularTriangulationTraits_2` and `PolygonTraits_2`.
|
||||
\tparam CoordinateOutputIterator must be a model of `OutputIterator` and have the value type OutputFunctor::result_type.
|
||||
\tparam CoordinateOutputIterator must be a model of `OutputIterator` and have the value type `OutputFunctor::result_type`.
|
||||
The output computed by the function is placed starting at `out`.
|
||||
\tparam OutputFunctor must be a functor with argument type `std::pair<Rt::Vertex_handle, Rt::Geom_traits::FT>`.
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ for a detailed explanation on the usage of `OutputFunctor`.
|
|||
\param start is an optional argument that is used as a hint of where the locate process has to start its search.
|
||||
|
||||
\return A triple consisting of:
|
||||
- a sequence of object of types OutputFunctor::result_type, starting at `out`.
|
||||
- a sequence of objects of types `OutputFunctor::result_type`, starting at `out`.
|
||||
- the normalization factor of the coordinates.
|
||||
- a Boolean value which is set to `true` if the coordinate computation was successful,
|
||||
and `false` otherwise.
|
||||
|
|
@ -89,7 +89,7 @@ regular_neighbor_coordinates_2(const Rt& rt,
|
|||
typename Rt::Face_handle start = typename Rt::Face_handle());
|
||||
|
||||
/*!
|
||||
computes the regular neighbor coordinates for `p` with respect
|
||||
Computes the regular neighbor coordinates for `p` with respect
|
||||
to the weighted points in the two-dimensional regular triangulation `rt`.
|
||||
|
||||
The iterator range `[hole_begin, hole_end)` determines the boundary edges
|
||||
|
|
@ -115,7 +115,7 @@ regular_neighbor_coordinates_2(const Rt& rt,
|
|||
VertexIterator hidden_vertices_begin, VertexIterator hidden_vertices_end);
|
||||
|
||||
/*!
|
||||
computes the regular neighbor coordinates of the point `vh->point()` with respect
|
||||
Computes the regular neighbor coordinates of the point `vh->point()` with respect
|
||||
to the vertices of `rt` excluding `vh->point()`.
|
||||
|
||||
\cgalHeading{Requirements}
|
||||
|
|
|
|||
|
|
@ -32,25 +32,20 @@ which use the same mechanism to allow flexible output.
|
|||
/// @{
|
||||
|
||||
/*!
|
||||
estimates the gradient of a function at a query point, given neighbor
|
||||
coordinates of this point.
|
||||
|
||||
in the range `[first, beyond)` and the function values of the neighbors
|
||||
provided by the functor `f`. `norm` is the normalization
|
||||
factor of the barycentric coordinates.
|
||||
Estimates the gradient of a function at a query point.
|
||||
|
||||
\tparam CoordinateInputIterator must be a model of `ForwardIterator` and must have as
|
||||
value type a pair associating an entity to a (non-normalized) barycentric coordinate.
|
||||
More precisely, `std::iterator_traits<CoordinateIterator>::%value_type::first_type`
|
||||
More precisely, `std::iterator_traits<CoordinateInputIterator>::%value_type::first_type`
|
||||
can be of the following types:
|
||||
<ul>
|
||||
<li> a type equivalent to `Traits::Point_d` or `Traits::Weighted_point_d` </li>
|
||||
<li> an iterator type providing a `point()` function returning a type equivalent to `Traits::Point_d` or `Traits::Weighted_point_d`; </li>
|
||||
</ul>
|
||||
and `std::iterator_traits<CoordinateIterator>::%value_type::second_type` must be equivalent to
|
||||
and `std::iterator_traits<CoordinateInputIterator>::%value_type::second_type` must be equivalent to
|
||||
`Traits::FT`.
|
||||
\tparam ValueFunctor must be a functor where `ValueFunctor::argument_type` must be equivalent to
|
||||
`std::iterator_traits<CoordinateIterator>::%value_type::first_type` and
|
||||
`std::iterator_traits<CoordinateInputIterator>::%value_type::first_type` and
|
||||
`ValueFunctor::result_type` is a pair of the function value type and a Boolean.
|
||||
The function value type must provide a multiplication and addition operation with the type
|
||||
`Traits::FT` as well as a constructor with argument `0`.
|
||||
|
|
@ -80,15 +75,16 @@ sibson_gradient_fitting(CoordinateInputIterator first, CoordinateInputIterator b
|
|||
const Traits& traits);
|
||||
|
||||
/*!
|
||||
estimates the function gradients at all vertices of the Delaunay triangulation `dt`
|
||||
Estimates the function gradients at all vertices of the Delaunay triangulation `dt`
|
||||
that lie inside the convex hull, using the coordinates computed by the
|
||||
function `PkgInterpolationNaturalNeighborCoordinates2`.
|
||||
|
||||
\tparam Dt must be of type `Delaunay_triangulation_2<Traits, Tds>`.
|
||||
`Traits` must be a model of the concepts `DelaunayTriangulationTraits_2` and `PolygonTraits_2`.
|
||||
\tparam Dt must be of type `Delaunay_triangulation_2<Dt_Traits, Tds>`.
|
||||
`Dt_Traits` must be a model of the concepts `DelaunayTriangulationTraits_2` and `PolygonTraits_2`.
|
||||
\tparam GradientOutputIterator must be a model of `OutputIterator` with value type
|
||||
OutputFunctor::result_type.
|
||||
`OutputFunctor::result_type`.
|
||||
\tparam OutputFunctor must be a functor with argument type `std::pair<Dt::Vertex_handle, Traits::Vector_d>`.
|
||||
Note that the result type of the functor is not specified and is chosen by users to fit their needs.
|
||||
\tparam ValueFunctor must be a functor where:
|
||||
- `ValueFunctor::argument_type` must be either `std::pair<Dt::Vertex_handle, Dt::Geom_traits::FT>`
|
||||
or `std::pair<Dt::Point, Dt::Geom_traits::FT>`.
|
||||
|
|
@ -98,7 +94,7 @@ The function value type must provide a multiplication and addition operation wit
|
|||
\tparam Traits must be a model of `GradientFittingTraits`.
|
||||
|
||||
\param dt is the Delaunay triangulation.
|
||||
\param out is an object of type `CoordinateOutputIterator`.
|
||||
\param out is an object of type `GradientOutputIterator`.
|
||||
\param fct is an object of type `OutputFunctor`.
|
||||
\param value_function is a functor of type `ValueFunctor` that gives access to
|
||||
the values of the function at points of the triangulation.
|
||||
|
|
@ -117,15 +113,16 @@ sibson_gradient_fitting_nn_2(const Dt& dt,
|
|||
const Traits& traits);
|
||||
|
||||
/*!
|
||||
estimates the function gradients at all vertices of `rt` that lie
|
||||
Estimates the function gradients at all vertices of `rt` that lie
|
||||
inside the convex hull using the coordinates computed by the
|
||||
functions `PkgInterpolationRegularNeighborCoordinates2`.
|
||||
|
||||
\tparam Rt must be of type `Regular_triangulation_2<Traits, Tds>`.
|
||||
`Traits` must be a model of the concepts `RegularTriangulationTraits_2` and `PolygonTraits_2`.
|
||||
\tparam Rt must be of type `Regular_triangulation_2<Rt_Traits, Tds>`.
|
||||
`Rt_Traits` must be a model of the concepts `RegularTriangulationTraits_2` and `PolygonTraits_2`.
|
||||
\tparam GradientOutputIterator must be a model of `OutputIterator` with value type
|
||||
OutputFunctor::result_type.
|
||||
`OutputFunctor::result_type`.
|
||||
\tparam OutputFunctor must be a functor with argument type `std::pair<Rt::Vertex_handle, Traits::Vector_d>`.
|
||||
Note that the result type of the functor is not specified and is chosen by users to fit their needs.
|
||||
\tparam ValueFunctor must be a functor where:
|
||||
- `ValueFunctor::argument_type` must be either `std::pair<Rt::Vertex_handle, Rt::Geom_traits::FT>`
|
||||
or `std::pair<Rt::Weighted_point, Rt::Geom_traits::FT>`.
|
||||
|
|
@ -135,7 +132,7 @@ The function value type must provide a multiplication and addition operation wit
|
|||
\tparam Traits must be a model of `GradientFittingTraits`.
|
||||
|
||||
\param rt is the regular triangulation.
|
||||
\param out is an object of type `CoordinateOutputIterator`.
|
||||
\param out is an object of type `GradientOutputIterator`.
|
||||
\param fct is an object of type `OutputFunctor`.
|
||||
\param value_function is a functor of type `ValueFunctor` that gives access to
|
||||
the values of the function at points of the triangulation.
|
||||
|
|
|
|||
|
|
@ -81,9 +81,8 @@ surface_neighbor_coordinates_3(InputIterator first, InputIterator beyond,
|
|||
const Kernel& K);
|
||||
|
||||
/*!
|
||||
the same as above only that the traits class
|
||||
must be instantiated by the user. `ITraits` must be equivalent
|
||||
to `Voronoi_intersection_2_traits_3<K>`.
|
||||
Same as above only that the traits class must be instantiated by the user.
|
||||
`ITraits` must be equivalent to `Voronoi_intersection_2_traits_3<K>`.
|
||||
*/
|
||||
template < class OutputIterator, class InputIterator, class ITraits >
|
||||
CGAL::Triple< OutputIterator, typename ITraits::FT, bool >
|
||||
|
|
@ -110,7 +109,7 @@ surface_neighbor_coordinates_certified_3(InputIterator first, InputIterator beyo
|
|||
const Kernel& K);
|
||||
|
||||
/*!
|
||||
The same as above except that this function takes the
|
||||
Same as above except that this function takes the
|
||||
maximal distance from p to the points in the range
|
||||
`[first, beyond)` as additional parameter.
|
||||
*/
|
||||
|
|
@ -123,8 +122,7 @@ surface_neighbor_coordinates_certified_3(InputIterator first, InputIterator beyo
|
|||
const Kernel& kernel);
|
||||
|
||||
/*!
|
||||
The same as above only
|
||||
that the traits class must be instantiated by the user and without
|
||||
Same as above only that the traits class must be instantiated by the user and without
|
||||
the parameter `max_distance`. `ITraits` must be equivalent
|
||||
to `Voronoi_intersection_2_traits_3<K>`.
|
||||
*/
|
||||
|
|
@ -136,8 +134,7 @@ surface_neighbor_coordinates_certified_3(InputIterator first, InputIterator beyo
|
|||
const ITraits& traits);
|
||||
|
||||
/*!
|
||||
The same as above with the parameter
|
||||
`max_distance`.
|
||||
Same as above with the parameter `max_distance`.
|
||||
*/
|
||||
template <class OutputIterator, class InputIterator, class ITraits>
|
||||
CGAL::Quadruple< OutputIterator, typename ITraits::FT, bool, bool >
|
||||
|
|
@ -148,7 +145,7 @@ surface_neighbor_coordinates_certified_3(InputIterator first, InputIterator beyo
|
|||
const ITraits& traits);
|
||||
|
||||
/*!
|
||||
computes the surface neighbor coordinates with respect to the points
|
||||
Computes the surface neighbor coordinates with respect to the points
|
||||
that are vertices of the Delaunay triangulation `dt`. The type `Dt`
|
||||
must be equivalent to `Delaunay_triangulation_3<Gt, Tds>`. The
|
||||
optional parameter `start` is used as a starting place for the search
|
||||
|
|
@ -171,7 +168,7 @@ surface_neighbor_coordinates_3(const Dt& dt,
|
|||
typename Dt::Cell_handle start = typename Dt::Cell_handle());
|
||||
|
||||
/*!
|
||||
The same as above only that the parameter traits instantiates
|
||||
Same as above only that the parameter traits instantiates
|
||||
the geometric traits class. Its type `ITraits` must be
|
||||
equivalent to `Voronoi_intersection_2_traits_3<K>`.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ surface_neighbors_3(InputIterator first, InputIterator beyond,
|
|||
const Kernel& K);
|
||||
|
||||
/*!
|
||||
The same as above only that the traits class must be instantiated by
|
||||
Same as above only that the traits class must be instantiated by
|
||||
the user. `ITraits` must be equivalent to
|
||||
`Voronoi_intersection_2_traits_3<K>`.
|
||||
*/
|
||||
|
|
@ -101,7 +101,7 @@ surface_neighbors_certified_3(InputIterator first, InputIterator beyond,
|
|||
const Kernel& K);
|
||||
|
||||
/*!
|
||||
The same as above except that this function
|
||||
Same as above except that this function
|
||||
takes the maximal distance from `p` to the points in the range
|
||||
`[first, beyond)` as additional parameter.
|
||||
*/
|
||||
|
|
@ -115,9 +115,8 @@ surface_neighbors_certified_3(InputIterator first, InputIterator beyond,
|
|||
const Kernel& kernel);
|
||||
|
||||
/*!
|
||||
The same as above only that the traits
|
||||
class must be instantiated by the user. `ITraits` must be
|
||||
equivalent to `Voronoi_intersection_2_traits_3<K>`. There is no
|
||||
Same as above only that the traits class must be instantiated by the user.
|
||||
`ITraits` must be equivalent to `Voronoi_intersection_2_traits_3<K>`. There is no
|
||||
parameter `max_distance`.
|
||||
*/
|
||||
template <class OutputIterator, class InputIterator, class ITraits>
|
||||
|
|
@ -128,8 +127,7 @@ surface_neighbors_certified_3(InputIterator first, InputIterator beyond,
|
|||
const ITraits& traits);
|
||||
|
||||
/*!
|
||||
The same as above with the parameter
|
||||
`max_distance`.
|
||||
Same as above with the parameter `max_distance`.
|
||||
*/
|
||||
template <class OutputIterator, class InputIterator, class ITraits>
|
||||
std::pair< OutputIterator, bool >
|
||||
|
|
@ -140,7 +138,7 @@ surface_neighbors_certified_3(InputIterator first, InputIterator beyond,
|
|||
const ITraits& traits);
|
||||
|
||||
/*!
|
||||
computes the surface neighbor coordinates with respect to the points
|
||||
Computes the surface neighbor coordinates with respect to the points
|
||||
that are vertices of the Delaunay triangulation `dt`. The type `Dt`
|
||||
must be equivalent to `Delaunay_triangulation_3<Gt, Tds>`. The
|
||||
optional parameter `start` is used for the used as a starting place
|
||||
|
|
@ -163,7 +161,7 @@ surface_neighbors_3(const Dt& dt,
|
|||
typename Dt::Cell_handle start = typename Dt::Cell_handle());
|
||||
|
||||
/*!
|
||||
The same as above only that the parameter `traits` instantiates
|
||||
Same as above only that the parameter `traits` instantiates
|
||||
the geometric traits class. Its type `ITraits` must be
|
||||
equivalent to `Voronoi_intersection_2_traits_3<K>`.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ typedef unspecified_type Construct_scaled_vector_d;
|
|||
/*!
|
||||
Constructor object for `FT`. Provides the operator:
|
||||
|
||||
`FT operator() (Point_d p, Point_d q)`, which the squared distance between `p` and `q`.
|
||||
`FT operator() (Point_d p, Point_d q)`, which returns the squared distance between `p` and `q`.
|
||||
*/
|
||||
typedef unspecified_type Compute_squared_distance_d;
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ typedef unspecified_type Point_d;
|
|||
/*!
|
||||
The weighted point type.
|
||||
*/
|
||||
typedef unspecified_type Point_d;
|
||||
typedef unspecified_type Weighted_point_d;
|
||||
|
||||
/*!
|
||||
The corresponding vector type.
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ square root of the weight of the point.
|
|||
\warning Contrary to Voronoi diagrams, a weighted point \f$ p_i\f$ does not necessarily
|
||||
possess a non-empty cell in the power diagram of \f$ \mathcal{P}\f$ (with
|
||||
\f$ p_i\in\mathcal{P}\f$). When this is the case, that point is then said to be <em>hidden</em>
|
||||
and all of its regular neighboring coordinates are null.
|
||||
and all of its regular neighbor coordinates are null.
|
||||
|
||||
\subsection InterpolationImplementation Implementation
|
||||
|
||||
|
|
@ -125,7 +125,7 @@ Section \ref secsurface and the reference page
|
|||
Given a Delaunay triangulation or a regular triangulation, our implementation
|
||||
computes natural and regular neighbor coordinates in two steps.
|
||||
Firstly, the vertices in conflict with the query point (that is, the vertices
|
||||
from which the query point will "steal") are first determined. Then, the areas
|
||||
from which the query point will "steal") are determined. Then, the areas
|
||||
\f$ \pi_i(\mathbf{x})\f$ are computed by triangulating the Voronoi
|
||||
sub-cells. The output is threefold:
|
||||
- points (or vertices) with a non-null coordinate along with these coordinates \f$ \pi_i(\mathbf{x})\f$,
|
||||
|
|
@ -135,7 +135,7 @@ sub-cells. The output is threefold:
|
|||
convex hull or not).
|
||||
|
||||
Note that if the query point has already been located in the triangulation (for example using
|
||||
functions such as \link Triangulation_2::locate() locate() \endlink) and/or the boundary
|
||||
functions such as \link Triangulation_2::locate() locate()\endlink) and/or the boundary
|
||||
edges of the conflict zone are already determined, alternative functions
|
||||
allow to avoid the re-computation (see \ref PkgInterpolationNaturalNeighborCoordinates2
|
||||
and \ref PkgInterpolationRegularNeighborCoordinates2).
|
||||
|
|
@ -172,11 +172,12 @@ By default and for backward compatibility reasons, this output is converted
|
|||
into objects of type `std::pair<Point, Coord_type>`, where `Point` is a bare
|
||||
(weightless) point.
|
||||
|
||||
It is however possible to collect the output as objects of type
|
||||
`std::pair<Vertex_handle, Coord_type>` or any other type provided
|
||||
that a functor with argument type `std::pair<Vertex_handle, Coord_type>`
|
||||
is passed to the coordinate computation function.
|
||||
Usage of this parameter is shown in the example below, where the output is
|
||||
It is however possible to collect the output as objects of any desired
|
||||
type, for example the simple `Point` type, by passing a functor as extra parameter
|
||||
of the coordinates computation function.
|
||||
The argument type of this functor must be `std::pair<Vertex_handle, Coord_type>`
|
||||
and the result type is chosen by the user, but must be consistent with the output iterator.
|
||||
Usage of this parameter is demonstrated in the example below, where the output is
|
||||
kept as objects of type `std::pair<Vertex_handle, Coord_type>`, which allows
|
||||
us to then store the coordinate in the vertex, using the class
|
||||
`CGAL::Triangulation_vertex_base_with_info_2`.
|
||||
|
|
@ -357,7 +358,7 @@ computation needed to compute the distance \f$ \|\mathbf{x} -
|
|||
\mathbf{p_i}\|\f$. The theoretical guarantees are the same (see
|
||||
\cgalCite{cgal:f-csapc-03}). Simply, the smaller the slope of \f$ f\f$
|
||||
around \f$ f(0)\f$, the faster the interpolant approaches \f$ \xi_i\f$ as
|
||||
\f$ \mathbf{x} \rightarrow \mathbf{p_i}\f$.
|
||||
\f$ \mathbf{x} \f$ goes to \f$ \mathbf{p_i}\f$.
|
||||
|
||||
\subsubsection InterpolationFarin Farin's C^1 Continuous Interpolant
|
||||
|
||||
|
|
@ -419,14 +420,14 @@ compatible with the function.
|
|||
|
||||
\cgalExample{Interpolation/sibson_interpolation_2.cpp}
|
||||
|
||||
Additional examples compare numerically the errors of the different
|
||||
interpolation functions with respect to a known function.
|
||||
They can be found in the `examples` directory of the distribution.
|
||||
The example \link Interpolation/interpolation_2.cpp interpolation_2.cpp \endlink
|
||||
compares numerically the errors of the different interpolation functions
|
||||
with respect to a known function.
|
||||
|
||||
\subsection InterpolationExampleVertices Example for Storing Values and Gradients in Vertices
|
||||
|
||||
In the previous examples, we stored the values and gradients in a `std::map` and wrapped them in
|
||||
a `CGAL::Data_access` object. We can avoid this "external" storage by
|
||||
In the previous examples, we have stored the values and gradients in a `std::map`
|
||||
and wrapped them in a `CGAL::Data_access` object. We can avoid this "external" storage by
|
||||
using the class `Triangulation_vertex_base_with_info_2` provided by the triangulation package:
|
||||
values and gradients can be stored directly in the vertices of the triangulation.
|
||||
Functors and output iterators requested by the gradient fitting and interpolation functions
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ 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
|
||||
name `linear_interpolation()` and `quadratic_interpolation()`.
|
||||
names `linear_interpolation()` and `quadratic_interpolation()`.
|
||||
|
||||
## Natural Neighbor Interpolation ##
|
||||
|
||||
|
|
@ -79,23 +79,23 @@ User Manual \endlink.
|
|||
- `GradientFittingTraits`
|
||||
|
||||
## Interpolation Functions ##
|
||||
- `CGAL::linear_interpolation`
|
||||
- `CGAL::sibson_c1_interpolation`
|
||||
- `CGAL::farin_c1_interpolation`
|
||||
- `CGAL::quadratic_interpolation`
|
||||
- `CGAL::sibson_gradient_fitting`
|
||||
- `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>`
|
||||
|
||||
## Natural neighbor coordinate computation ##
|
||||
- `CGAL::natural_neighbor_coordinates_2`
|
||||
- `CGAL::regular_neighbor_coordinates_2`
|
||||
- `CGAL::natural_neighbor_coordinates_2()`
|
||||
- `CGAL::regular_neighbor_coordinates_2()`
|
||||
|
||||
## Surface neighbor and surface neighbor coordinate computation ##
|
||||
- `CGAL::Voronoi_intersection_2_traits_3<K>`
|
||||
- `CGAL::surface_neighbor_coordinates_3`
|
||||
- `CGAL::surface_neighbors_3`
|
||||
- `CGAL::surface_neighbor_coordinates_3()`
|
||||
- `CGAL::surface_neighbors_3()`
|
||||
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
/*!
|
||||
\example Interpolation/interpolation_2.cpp
|
||||
\example Interpolation/nn_coordinates_2.cpp
|
||||
\example Interpolation/nn_coordinates_with_info_2.cpp
|
||||
\example Interpolation/rn_coordinates_2.cpp
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
|
||||
#include <CGAL/Triangulation_vertex_base_with_info_2.h>
|
||||
#include <CGAL/Triangulation_data_structure_2.h>
|
||||
#include <CGAL/Delaunay_triangulation_2.h>
|
||||
|
||||
#include <CGAL/natural_neighbor_coordinates_2.h>
|
||||
|
|
|
|||
Loading…
Reference in New Issue