Merge pull request #445 from maxGimeno/CGAL_cgalRequires_deletion-GF

Removal of cgalRequires
This commit is contained in:
Sebastien Loriot 2015-11-23 22:18:24 +01:00
commit 4ae7b72bd7
57 changed files with 196 additions and 186 deletions

View File

@ -194,9 +194,8 @@ OutputIterator get_alpha_shape_vertices(OutputIterator it, Classification_type t
/*! /*!
Inserts the fixed alpha shape `A` into the stream `os`. Inserts the fixed alpha shape `A` into the stream `os`.
Defined in `CGAL/IO/io.h`
\cgalRequires The insert operator must be defined for `GT::Point`. An overlaoad of `operator<<` must be available for `GT::Point`.
\relates Fixed_alpha_shape_3 \relates Fixed_alpha_shape_3
*/ */
ostream& operator<<(ostream& os, const Fixed_alpha_shape_3<Dt>& A); ostream& operator<<(ostream& os, const Fixed_alpha_shape_3<Dt>& A);

View File

@ -213,7 +213,7 @@ than `eps` in general). In any case, the number
\f$ 1+\epsilon\f$) can be queried by calling the routine \f$ 1+\epsilon\f$) can be queried by calling the routine
`achieved_epsilon()` discussed below. `achieved_epsilon()` discussed below.
\cgalRequires `Iterator` must be a model for concept `InputIterator` with value type `Point`. \tparam Iterator must be a model of `InputIterator` with `Point` as value type.
\pre The dimension \f$ d\f$ of the input points must be at least \f$ 2\f$, and \f$ \epsilon>0\f$. \pre The dimension \f$ d\f$ of the input points must be at least \f$ 2\f$, and \f$ \epsilon>0\f$.
*/ */

View File

@ -135,7 +135,7 @@ std::ostream& stream = std::cout);
initializes `min_annulus` to \f$ ma(P)\f$ with \f$ P\f$ being the set of points initializes `min_annulus` to \f$ ma(P)\f$ with \f$ P\f$ being the set of points
in the range [`first`,`last`). in the range [`first`,`last`).
\cgalRequires The value type of `InputIterator` is `Point`. \tparam InputIterator is a model of `InputIterator` with `Point` as value type.
\pre All points have the same dimension. \pre All points have the same dimension.
*/ */
template < class InputIterator > template < class InputIterator >
@ -241,16 +241,16 @@ outer_support_points_end( ) const;
/*! /*!
returns the center of `min_annulus`. returns the center of `min_annulus`.
\cgalRequires An implicit conversion from `ET` to `RT` is available. An implicit conversion from `ET` to `RT` must be available.
\pre `min_annulus` is not empty. \pre `min_annulus` is not empty.
*/ */
Point center( ) const; Point center( ) const;
/*! /*!
returns the squared inner radius of `min_annulus`. returns the squared inner radius of `min_annulus`.
\cgalRequires An implicit conversion from `ET` to `RT` is available. An implicit conversion from `ET` to `RT` must be available.
\pre `min_annulus` is not empty. \pre `min_annulus` is not empty.
*/ */
FT squared_inner_radius( ) const; FT squared_inner_radius( ) const;
@ -258,7 +258,7 @@ FT squared_inner_radius( ) const;
/*! /*!
returns the squared outer radius of `min_annulus`. returns the squared outer radius of `min_annulus`.
\cgalRequires An implicit conversion from `ET` to `RT` is available. An implicit conversion from `ET` to `RT` must be available.
\pre `min_annulus` is not empty. \pre `min_annulus` is not empty.
*/ */
FT squared_outer_radius( ) const; FT squared_outer_radius( ) const;
@ -372,7 +372,7 @@ void clear( );
sets `min_annulus` to \f$ ma(P)\f$, where \f$ P\f$ is the set of points in sets `min_annulus` to \f$ ma(P)\f$, where \f$ P\f$ is the set of points in
the range [`first`,`last`). the range [`first`,`last`).
\cgalRequires The value type of `InputIterator` is `Point`. \tparam InputIterator is a model of `InputIterator` with `Point` as value type.
\pre All points have the same dimension. \pre All points have the same dimension.
*/ */
template < class InputIterator > template < class InputIterator >
@ -390,7 +390,7 @@ void insert( const Point& p);
inserts the points in the range [`first`,`last`) into inserts the points in the range [`first`,`last`) into
`min_annulus` and recomputes the smallest enclosing annulus. `min_annulus` and recomputes the smallest enclosing annulus.
\cgalRequires The value type of `InputIterator` is `Point`. @tparam InputIterator is a model of `InputIterator` with `Point` as value type.
\pre All points have the same dimension. If `min_annulus` is not empty, this dimension must be equal to `min_annulus.ambient_dimension()`. \pre All points have the same dimension. If `min_annulus` is not empty, this dimension must be equal to `min_annulus.ambient_dimension()`.
*/ */
template < class InputIterator > template < class InputIterator >
@ -438,7 +438,7 @@ const Traits& traits( ) const;
/*! /*!
writes `min_annulus` to output stream `os`. writes `min_annulus` to output stream `os`.
\cgalRequires The output operator is defined for `Point`. An overload of `operator<<` must be defined for `Point`.
\relates Min_annulus_d \relates Min_annulus_d
*/ */
std::ostream& std::ostream&
@ -448,7 +448,7 @@ const Min_annulus_d<Traits>& min_annulus);
/*! /*!
reads `min_annulus` from input stream `is`. reads `min_annulus` from input stream `is`.
\cgalRequires The input operator is defined for `Point`. An overload of `operator>>` must be defined for `Point`.
\relates Min_annulus_d \relates Min_annulus_d
*/ */
std::istream& std::istream&

View File

@ -123,8 +123,8 @@ advance, using the random numbers generator `random`.
Usually, this will not be necessary, however, the algorithm's Usually, this will not be necessary, however, the algorithm's
efficiency depends on the order in which the points are efficiency depends on the order in which the points are
processed, and a bad order might lead to extremely poor processed, and a bad order might lead to extremely poor
performance (see example below). performance (see example below).
\cgalRequires The value type of `first` and `last` is `Point`. \tparam InputIterator must be a model of `InputIterator` with `Point` as value type.
*/ */
template < class InputIterator > template < class InputIterator >
Min_circle_2( InputIterator first, Min_circle_2( InputIterator first,
@ -299,7 +299,7 @@ inserts the points in the range [`first`,`last`)
into `min_circle` and recomputes the smallest enclosing circle by into `min_circle` and recomputes the smallest enclosing circle by
calling `insert(p)` for each point `p` in calling `insert(p)` for each point `p` in
[`first`,`last`). [`first`,`last`).
\cgalRequires The value type of `first` and `last` is `Point`. \tparam InputIterator must be a model of `InputIterator` with `Point` as value type.
*/ */
template < class InputIterator > template < class InputIterator >
void insert( InputIterator first, void insert( InputIterator first,
@ -350,7 +350,7 @@ const Traits& traits( ) const;
/*! /*!
writes `min_circle` to output stream `os`. writes `min_circle` to output stream `os`.
\cgalRequires The output operator is defined for `Point` (and for `Circle`, if pretty printing is used). An overload of `operator<<` must be defined for `Point` (and for `Circle`, if pretty printing is used).
\relates Min_circle_2 \relates Min_circle_2
*/ */
std::ostream& std::ostream&
@ -360,7 +360,7 @@ const Min_circle_2<Traits>& min_circle);
/*! /*!
reads `min_circle` from input stream `is`. reads `min_circle` from input stream `is`.
\cgalRequires The input operator is defined for `Point`. An overload of `operator>>` must be defined for `Point`.
\relates Min_circle_2 \relates Min_circle_2
*/ */
std::istream& std::istream&

View File

@ -113,7 +113,7 @@ Usually, this will not be necessary, however, the algorithm's
efficiency depends on the order in which the points are efficiency depends on the order in which the points are
processed, and a bad order might lead to extremely poor processed, and a bad order might lead to extremely poor
performance (see example below). performance (see example below).
\cgalRequires The value type of `first` and `last` is `Point`. \tparam InputIterator is a model of `InputIterator` with `Point` as value type.
*/ */
template < class InputIterator > template < class InputIterator >
Min_Ellipse_2( InputIterator first, Min_Ellipse_2( InputIterator first,
@ -312,7 +312,7 @@ inserts the points in the range [`first`,`last`)
into `min_ellipse` and recomputes the smallest enclosing ellipse by into `min_ellipse` and recomputes the smallest enclosing ellipse by
calling `insert(p)` for each point `p` in calling `insert(p)` for each point `p` in
[`first`,`last`). [`first`,`last`).
\cgalRequires The value type of `first` and `last` is `Point`. \tparam InputIterator is a model of `InputIterator` with `Point` as value type.
*/ */
template < class InputIterator > template < class InputIterator >
void insert( InputIterator first, void insert( InputIterator first,
@ -368,7 +368,7 @@ const Traits& traits( ) const;
/*! /*!
writes `min_ellipse` to output stream `os`. writes `min_ellipse` to output stream `os`.
\cgalRequires The output operator is defined for `Point` (and for `Ellipse`, if pretty printing is used). An overload of `operator<<` must be defined for `Point` (and for `Ellipse`, if pretty printing is used).
\relates Min_ellipse_2 \relates Min_ellipse_2
*/ */
std::ostream& std::ostream&
@ -378,7 +378,7 @@ const Min_ellipse_2<Traits>& min_ellipse);
/*! /*!
reads `min_ellipse` from input stream `is`. reads `min_ellipse` from input stream `is`.
\cgalRequires The input operator is defined for `Point`. An overload of `operator>>` must be defined for `Point`.
\relates Min_ellipse_2 \relates Min_ellipse_2
*/ */
std::istream& std::istream&

View File

@ -126,7 +126,9 @@ Min_sphere_d (const Traits& traits = Traits());
creates a variable `min_sphere` of type `Min_sphere_d`. creates a variable `min_sphere` of type `Min_sphere_d`.
It is initialized to \f$ ms(P)\f$ with \f$ P\f$ being the set of points It is initialized to \f$ ms(P)\f$ with \f$ P\f$ being the set of points
in the range [`first`,`last`). in the range [`first`,`last`).
\cgalRequires The value type of `first` and `last` is `Point`. If the traits parameter is not supplied, the class `Traits` must provide a default constructor. \pre All points have the same dimension. \tparam InputIterator is a model of `InputIterator` with `Point` as value type.
If the traits parameter is not supplied, the class `Traits` must provide a default constructor.
\pre All points have the same dimension.
*/ */
template < class InputIterator > template < class InputIterator >
Min_sphere_d( InputIterator first, Min_sphere_d( InputIterator first,
@ -259,7 +261,7 @@ void clear ();
sets `min_sphere` to the \f$ ms(P)\f$, where \f$ P\f$ is the set of points sets `min_sphere` to the \f$ ms(P)\f$, where \f$ P\f$ is the set of points
in the range [`first`,`last`). in the range [`first`,`last`).
\cgalRequires The value type of `first` and `last` is `Point`. \tparam InputIterator is a model of `InputIterator` with `Point` as value type.
\pre All points have the same dimension. \pre All points have the same dimension.
*/ */
template < class InputIterator > template < class InputIterator >
@ -281,7 +283,7 @@ void insert( const Point& p);
inserts the points in the range [`first`,`last`) inserts the points in the range [`first`,`last`)
into `min_sphere` and recomputes the smallest enclosing sphere, by into `min_sphere` and recomputes the smallest enclosing sphere, by
calling `insert` for all points in the range. calling `insert` for all points in the range.
\cgalRequires The value type of `first` and `last` is `Point`. \tparam InputIterator is a model of `InputIterator` with `Point` as value type.
\pre All points have the same dimension. If `min_sphere` is not empty, this dimension must be equal to `ambient_dimension()`. \pre All points have the same dimension. If `min_sphere` is not empty, this dimension must be equal to `ambient_dimension()`.
*/ */
template < class InputIterator > template < class InputIterator >
@ -331,7 +333,7 @@ const Traits& traits( ) const;
/*! /*!
writes `min_sphere` to output stream `os`. writes `min_sphere` to output stream `os`.
\cgalRequires The output operator is defined for `Point`. An overload of `operator<<` must be defined for `Point`.
\relates Min_sphere_d \relates Min_sphere_d
*/ */
std::ostream& operator << ( std::ostream& os, std::ostream& operator << ( std::ostream& os,
@ -341,7 +343,7 @@ min_sphere);
/*! /*!
reads `min_sphere` from input stream `is`. reads `min_sphere` from input stream `is`.
\cgalRequires The input operator is defined for `Point`. An overload of `operator>>` must be defined for `Point`
\relates Min_sphere_d \relates Min_sphere_d
*/ */
std::istream& operator >> ( std::istream& is, std::istream& operator >> ( std::istream& is,

View File

@ -176,7 +176,8 @@ creates a variable `minsphere` of type
`Min_sphere_of_spheres_d` and inserts (cf. `Min_sphere_of_spheres_d` and inserts (cf.
`insert()`) the spheres from `insert()`) the spheres from
the range [`first`,`last`). the range [`first`,`last`).
\cgalRequires The value type of `first` and `last` is `Sphere`. If the traits parameter is not supplied, the class `Traits` must provide a default constructor. \tparam InputIterator is a model of `InputIterator` with `Sphere` as value type.
If the traits parameter is not supplied, the class `Traits` must provide a default constructor.
*/ */
template < typename InputIterator > template < typename InputIterator >
Min_sphere_of_spheres_d( InputIterator first, Min_sphere_of_spheres_d( InputIterator first,
@ -265,7 +266,7 @@ void clear ();
sets `minsphere` to sets `minsphere` to
the \f$ ms(S)\f$, where \f$ S\f$ is the set of spheres in the range the \f$ ms(S)\f$, where \f$ S\f$ is the set of spheres in the range
[`first`,`last`). [`first`,`last`).
\cgalRequires The value type of `first` and `last` is `Sphere`. \tparam InputIterator is a model of `InputIterator` with `Sphere` as value type.
*/ */
template < class InputIterator > void template < class InputIterator > void
set( InputIterator first, InputIterator last ); set( InputIterator first, InputIterator last );
@ -280,7 +281,7 @@ void insert( const Sphere& s );
inserts the spheres in inserts the spheres in
the range [`first`,`last`) into the set \f$ S\f$ of instance the range [`first`,`last`) into the set \f$ S\f$ of instance
`minsphere`. `minsphere`.
\cgalRequires The value type of `first` and `last` is `Sphere`. \tparam InputIterator is a model of `InputIterator` with `Sphere` as value type.
*/ */
template < class InputIterator > void insert( template < class InputIterator > void insert(
InputIterator first, InputIterator last ); InputIterator first, InputIterator last );

View File

@ -28,13 +28,13 @@ omitted, if `ForwardIterator` refers to a two-dimensional point
type from one the \cgal kernels. In this case, a default traits class type from one the \cgal kernels. In this case, a default traits class
(`Min_quadrilateral_default_traits_2<K>`) is used. (`Min_quadrilateral_default_traits_2<K>`) is used.
\cgalRequires <OL> <OL>
<LI>If `Traits` is specified, it is a model for <LI>If `Traits` is specified, it must be a model for
`MinQuadrilateralTraits_2` and the value type `VT` of `MinQuadrilateralTraits_2` and the value type `VT` of
`ForwardIterator` is `Traits::Point_2`. Otherwise `ForwardIterator` is `Traits::Point_2`. Otherwise
`VT` is `CGAL::Point_2<K>` for some kernel `VT` must be `CGAL::Point_2<K>` for some kernel
`K`. `K`.
<LI>`OutputIterator` accepts `VT` as value type. <LI>`OutputIterator` must accept `VT` as value type.
</OL> </OL>
\sa `CGAL::min_rectangle_2()` \sa `CGAL::min_rectangle_2()`
@ -99,12 +99,12 @@ omitted, if `ForwardIterator` refers to a two-dimensional point
type from one the \cgal kernels. In this case, a default traits class type from one the \cgal kernels. In this case, a default traits class
(`Min_quadrilateral_default_traits_2<K>`) is used. (`Min_quadrilateral_default_traits_2<K>`) is used.
\cgalRequires <OL> <OL>
<LI>If `Traits` is specified, it is a model for <LI>If `Traits` is specified, it must be a model for
`MinQuadrilateralTraits_2` and the value type `VT` of `MinQuadrilateralTraits_2` and the value type `VT` of
`ForwardIterator` is `Traits::Point_2`. Otherwise `VT` `ForwardIterator` is `Traits::Point_2`. Otherwise `VT`
is `CGAL::Point_2<K>` for some kernel `K`. must be `CGAL::Point_2<K>` for some kernel `K`.
<LI>`OutputIterator` accepts `VT` as value type. <LI>`OutputIterator` must accept `VT` as value type.
</OL> </OL>
\sa `CGAL::min_parallelogram_2()` \sa `CGAL::min_parallelogram_2()`
@ -167,12 +167,12 @@ point type from one the \cgal kernels. In this case, a default
traits class (`Min_quadrilateral_default_traits_2<K>`) is traits class (`Min_quadrilateral_default_traits_2<K>`) is
used. used.
\cgalRequires <OL> <OL>
<LI>If `Traits` is specified, it is a model for <LI>If `Traits` is specified, it must be a model for
`MinQuadrilateralTraits_2` and the value type `VT` of `MinQuadrilateralTraits_2` and the value type `VT` of
`ForwardIterator` is `Traits::Point_2`. Otherwise `VT` `ForwardIterator` is `Traits::Point_2`. Otherwise `VT`
is `CGAL::Point_2<K>` for some kernel `K`. must be `CGAL::Point_2<K>` for some kernel `K`.
<LI>`OutputIterator` accepts `Traits::Line_2` as value type. <LI>`OutputIterator` must accept `Traits::Line_2` as value type.
</OL> </OL>
\sa `CGAL::min_rectangle_2()` \sa `CGAL::min_rectangle_2()`

View File

@ -227,14 +227,14 @@ can be omitted if `ForwardIterator` refers to a point type from
the 2D-Kernel. In this case, a default traits class the 2D-Kernel. In this case, a default traits class
(`Rectangular_p_center_default_traits_2<K>`) is used. (`Rectangular_p_center_default_traits_2<K>`) is used.
\cgalRequires <OL> <OL>
<LI><I>Either: (if no traits parameter is given)</I> Value type <LI><I>Either: (if no traits parameter is given)</I> Value type
of `ForwardIterator` is `CGAL::Point_2<K>` for some of `ForwardIterator` must be `CGAL::Point_2<K>` for some
representation class `K` and `FT` is equivalent to representation class `K` and `FT` must be equivalent to
`K::FT`, `K::FT`,
<LI><I>Or: (if a traits parameter is specified)</I> `Traits` <LI><I>Or: (if a traits parameter is specified)</I> `Traits`
is a model for `RectangularPCenterTraits_2`. must be a model for `RectangularPCenterTraits_2`.
<LI>`OutputIterator` accepts the value type of <LI>`OutputIterator` must accept the value type of
`ForwardIterator` as value type. `ForwardIterator` as value type.
</OL> </OL>

View File

@ -39,7 +39,7 @@ typedef unspecified_type Sphere;
/*! /*!
is a (exact or inexact) field number type. is a (exact or inexact) field number type.
\cgalRequires Currently, `FT` must either be `double` or `float`, or an exact field number type. (An <I>exact</I> number type is one which evaluates arithmetic expressions involving the four basic operations and comparisions with infinite precision, that is, like in \f$ \mathbb{R}\f$.) \tparam FT must either be `double` or `float`, or an exact field number type. (An <I>exact</I> number type is one which evaluates arithmetic expressions involving the four basic operations and comparisions with infinite precision, that is, like in \f$ \mathbb{R}\f$.)
*/ */
typedef unspecified_type FT; typedef unspecified_type FT;

View File

@ -97,14 +97,14 @@ intervals to [`lo[i]`,`hi[i]`], \f$ 0 \leq i < D\f$.
Box_d(NT lo[D], NT hi[D]); Box_d(NT lo[D], NT hi[D]);
/*! /*!
constructs from `bbox`. constructs from `bbox`.
\cgalRequires \f$ D=2\f$ and `NT`\f$ \equiv\f$`double`. Requirements: \f$ D=2\f$ and `NT`\f$ \equiv\f$`double`.
*/ */
Box_d( const Bbox_2& bbox); Box_d( const Bbox_2& bbox);
/*! /*!
constructs from `bbox`. constructs from `bbox`.
\cgalRequires \f$ D=3\f$ and `NT`\f$ \equiv\f$`double`. Requirements: \f$ D=3\f$ and `NT`\f$ \equiv\f$`double`.
*/ */
Box_d( const Bbox_3& bbox); Box_d( const Bbox_3& bbox);
@ -140,7 +140,7 @@ static int dimension();
returns a unique box id, see the returns a unique box id, see the
`IdPolicy` template parameter above for the different `IdPolicy` template parameter above for the different
choices. choices.
\cgalRequires `IdPolicy`\f$ \neq\f$`ID_NONE` \tparam `IdPolicy`\f$ \neq\f$`ID_NONE`
*/ */
std::size_t id(); std::size_t id();
@ -158,13 +158,13 @@ NT max_coord(int d) const;
/*! /*!
returns the bounding box returns the bounding box
\cgalRequires \f$ D=2\f$ and `NT`\f$ \equiv\f$`double` Requirements: \f$ D=2\f$ and `NT`\f$ \equiv\f$`double`
*/ */
const Bbox_2& bbox() const; const Bbox_2& bbox() const;
/*! /*!
returns the bounding box returns the bounding box
\cgalRequires \f$ D=3\f$ and `NT`\f$ \equiv\f$`double` Requirements: \f$ D=3\f$ and `NT`\f$ \equiv\f$`double`
*/ */
const Bbox_3& bbox() const; const Bbox_3& bbox() const;

View File

@ -238,7 +238,6 @@ ALIASES += "cgalConcept=\details <div id=\"CGALConcept\"></div>\n \brief"
ALIASES += "cgalConceptNamespace=\details <div id=\"CGALConceptNS\"></div>\n \brief" ALIASES += "cgalConceptNamespace=\details <div id=\"CGALConceptNS\"></div>\n \brief"
ALIASES += "cgalRefines=\xrefitem refines \"Refines\" \"Refinement Relationships\"" ALIASES += "cgalRefines=\xrefitem refines \"Refines\" \"Refinement Relationships\""
ALIASES += "cgalRequires=\xrefitem requires \"Requires\" \"Type Requirements\""
ALIASES += "cgalModels=\xrefitem models \"Is Model Of\" \"Is Model Relationships\"" ALIASES += "cgalModels=\xrefitem models \"Is Model Of\" \"Is Model Relationships\""
ALIASES += "cgalGeneralizes=\xrefitem generalizes \"Generalizes\" \"Generalization Relationships\"" ALIASES += "cgalGeneralizes=\xrefitem generalizes \"Generalizes\" \"Generalization Relationships\""
ALIASES += "cgalHasModel=\xrefitem hasModels \"Has Models\" \"Has Model Relationships\"" ALIASES += "cgalHasModel=\xrefitem hasModels \"Has Models\" \"Has Model Relationships\""

View File

@ -485,7 +485,7 @@ creates an input iterator `g` generating points of type `Point_2` uniformly
distributed on the segment from \f$ p\f$ to \f$ q\f$ (excluding \f$ q\f$), distributed on the segment from \f$ p\f$ to \f$ q\f$ (excluding \f$ q\f$),
i.e.\ \f$ *g == (1-\lambda)\, p + \lambda q\f$ where \f$ 0 \le\lambda< 1\f$. i.e.\ \f$ *g == (1-\lambda)\, p + \lambda q\f$ where \f$ 0 \le\lambda< 1\f$.
A single random number is needed from `rnd` for each point. A single random number is needed from `rnd` for each point.
\cgalRequires The expressions `to_double(p.x())` and `to_double(p.y())` must result in the respective `double` representation of the coordinates of \f$ p\f$, and similarly for \f$ q\f$. The expressions `to_double(p.x())` and `to_double(p.y())` must result in the respective `double` representation of the coordinates of \f$ p\f$, and similarly for \f$ q\f$.
*/ */
Random_points_on_segment_2( const Point_2& p, const Point_2& q, Random_points_on_segment_2( const Point_2& p, const Point_2& q,
Random& rnd = default_random); Random& rnd = default_random);
@ -630,7 +630,7 @@ segment defined by \f$ p\f$ and \f$ q\f$. Values of the index parameter \f$ i\f$
than 0 indicate starting points for the sequence further from \f$ p\f$. than 0 indicate starting points for the sequence further from \f$ p\f$.
Point \f$ p\f$ has index value 0 and \f$ q\f$ has index value \f$ n-1\f$. Point \f$ p\f$ has index value 0 and \f$ q\f$ has index value \f$ n-1\f$.
\cgalRequires The expressions `to_double(p.x())` and `to_double(p.y())` must result in the respective `double` representation of the coordinates of \f$ p\f$, and similarly for \f$ q\f$. The expressions `to_double(p.x())` and `to_double(p.y())` must result in the respective `double` representation of the coordinates of \f$ p\f$, and similarly for \f$ q\f$.
*/ */
Points_on_segment_2( const Point_2& p, const Point_2& q, Points_on_segment_2( const Point_2& p, const Point_2& q,
std::size_t n, std::size_t i = 0); std::size_t n, std::size_t i = 0);

View File

@ -113,7 +113,7 @@ Halfedge_handle create_segment();
removes the first vertex if vertices are supported. removes the first vertex if vertices are supported.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
*/ */
void vertices_pop_front(); void vertices_pop_front();
@ -127,7 +127,7 @@ void vertices_pop_back();
removes the vertex `v` if vertices are supported. removes the vertex `v` if vertices are supported.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
*/ */
void vertices_erase( Vertex_handle v); void vertices_erase( Vertex_handle v);
@ -135,7 +135,8 @@ void vertices_erase( Vertex_handle v);
removes the range `[first,last)` if vertices removes the range `[first,last)` if vertices
are supported. are supported.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`.
`Supports_removal` must be `CGAL::Tag_true`.
*/ */
void vertices_erase( Vertex_handle first, Vertex_handle last); void vertices_erase( Vertex_handle first, Vertex_handle last);
@ -143,7 +144,7 @@ void vertices_erase( Vertex_handle first, Vertex_handle last);
removes the first face if faces are supported. removes the first face if faces are supported.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
*/ */
void faces_pop_front(); void faces_pop_front();
@ -157,7 +158,7 @@ void faces_pop_back();
removes the face `f` if faces are supported. removes the face `f` if faces are supported.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
*/ */
void faces_erase( Face_handle f); void faces_erase( Face_handle f);
@ -165,7 +166,7 @@ void faces_erase( Face_handle f);
removes the range `[first,last)` if faces are removes the range `[first,last)` if faces are
supported. supported.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
*/ */
void faces_erase( Face_handle first, Face_handle last); void faces_erase( Face_handle first, Face_handle last);
@ -178,7 +179,7 @@ creates isolated vertices they get removed as well. See
`make_hole()` for a more specialized variant. `make_hole()` for a more specialized variant.
\pre `h->is_border() == false`. \pre `h->is_border() == false`.
\cgalRequires If faces are supported, `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. If faces are supported, `Supports_removal`must be `CGAL::Tag_true`.
*/ */
void erase_face( Halfedge_handle h); void erase_face( Halfedge_handle h);
@ -186,7 +187,7 @@ void erase_face( Halfedge_handle h);
removes the vertices, halfedges, and faces that belong to the removes the vertices, halfedges, and faces that belong to the
connected component of `h`. \pre For all halfedges `g` in the connected component `g.next() != Halfedge_handle()`. connected component of `h`. \pre For all halfedges `g` in the connected component `g.next() != Halfedge_handle()`.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
*/ */
void erase_connected_component( Halfedge_handle h); void erase_connected_component( Halfedge_handle h);
@ -195,9 +196,9 @@ Erases the small connected components and the isolated vertices.
Keep `nb_components_to_keep` largest connected components. Keep `nb_components_to_keep` largest connected components.
Returns the number of connected components erased (ignoring isolated vertices). Returns the number of connected components erased (ignoring isolated vertices).
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`, `Supports_removal` must be `CGAL::Tag_true`,
`Supports_vertex_halfedge` \f$ \equiv\f$ `CGAL::Tag_true` and `Supports_vertex_halfedge` must be `CGAL::Tag_true` and
`Supports_halfedge_vertex` \f$ \equiv\f$ `CGAL::Tag_true` `Supports_halfedge_vertex` must be `CGAL::Tag_true`.
*/ */
unsigned int keep_largest_connected_components(unsigned int nb_components_to_keep); unsigned int keep_largest_connected_components(unsigned int nb_components_to_keep);
@ -210,7 +211,7 @@ unsigned int keep_largest_connected_components(unsigned int nb_components_to_kee
removes the face incident to `h` from `hds` and creates a hole. removes the face incident to `h` from `hds` and creates a hole.
\pre `h != Halfedge_handle()` and `!(h->is_border())`. \pre `h != Halfedge_handle()` and `!(h->is_border())`.
\cgalRequires If faces are supported, `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. If faces are supported, `Supports_removal` must be `CGAL::Tag_true`.
*/ */
void make_hole( Halfedge_handle h); void make_hole( Halfedge_handle h);
@ -294,7 +295,7 @@ holes. Returns the predecessor of `h` around the face. The invariant
the data structure unchanged. The time is proportional to the size the data structure unchanged. The time is proportional to the size
of the face removed and the time to compute `h->prev()`. of the face removed and the time to compute `h->prev()`.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
\image html euler_face.png \image html euler_face.png
\image latex euler_face.png \image latex euler_face.png
@ -325,7 +326,7 @@ and keeps the polyhedron unchanged.
The time is proportional to the degree of the vertex removed and The time is proportional to the degree of the vertex removed and
the time to compute `h->prev()` and `h->opposite()->prev()`. the time to compute `h->prev()` and `h->opposite()->prev()`.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
\image html euler_vertex.png \image html euler_vertex.png
\image latex euler_vertex.png \image latex euler_vertex.png
@ -360,7 +361,7 @@ create_center_vertex(h))` holds if `h` is not a border halfedge.
The time is proportional to the sum of the size of all incident faces. The time is proportional to the sum of the size of all incident faces.
\pre None of the incident faces of `g->vertex()` is a hole. There are at least two distinct faces incident to the faces that are incident to `g->vertex()`. (This prevents the operation from collapsing a volume into two faces glued together with opposite orientations, such as would happen with any vertex of a tetrahedron.) \pre None of the incident faces of `g->vertex()` is a hole. There are at least two distinct faces incident to the faces that are incident to `g->vertex()`. (This prevents the operation from collapsing a volume into two faces glued together with opposite orientations, such as would happen with any vertex of a tetrahedron.)
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
\image html euler_center.png \image html euler_center.png
\image latex euler_center.png \image latex euler_center.png
@ -395,7 +396,7 @@ by `g` gets removed. Both faces may be holes. The invariant
data structure unchanged. data structure unchanged.
\pre The faces denoted by `h` and `g` are different and have equal degree (i.e., number of edges). \pre The faces denoted by `h` and `g` are different and have equal degree (i.e., number of edges).
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
\image html euler_loop.png \image html euler_loop.png
\image latex euler_loop.png \image latex euler_loop.png

View File

@ -146,7 +146,7 @@ where `K` is a model for `Kernel`.
\tparam OutputIterator must accepts dereference/assignments of `Traits::Point_2`. \tparam OutputIterator must accepts dereference/assignments of `Traits::Point_2`.
\cgalRequires There is a global function `K::FT CGAL::sqrt(K::FT)` There must be a global function `K::FT CGAL::sqrt(K::FT)`
defined that computes the squareroot of a number. defined that computes the squareroot of a number.
\sa `CGAL::maximum_area_inscribed_k_gon_2()` \sa `CGAL::maximum_area_inscribed_k_gon_2()`

View File

@ -59,7 +59,7 @@ Point_d(double x0, double x1, ...);
/*! introduces a point with coordinate set `[first,end)`. /*! introduces a point with coordinate set `[first,end)`.
\pre If `DimensionTag` is a fixed dimension, it matches `distance(first,end)`. \pre If `DimensionTag` is a fixed dimension, it matches `distance(first,end)`.
\cgalRequires The value type of `InputIterator` is convertible to `double`. \tparam InputIterator has its value type that is convertible to `double`.
*/ */
template<typename InputIterator> template<typename InputIterator>
Point_d(InputIterator first, InputIterator end); Point_d(InputIterator first, InputIterator end);
@ -79,7 +79,7 @@ Cartesian_const_iterator_d cartesian_end()const;
struct Construct_circumcenter_d { struct Construct_circumcenter_d {
/*! returns the center of the sphere defined by `A=tuple[first,last)`. The sphere is centered in the affine hull of A and passes through all the points of A. The order of the points of A does not matter. /*! returns the center of the sphere defined by `A=tuple[first,last)`. The sphere is centered in the affine hull of A and passes through all the points of A. The order of the points of A does not matter.
\pre A is affinely independant. \pre A is affinely independant.
\cgalRequires The value type of `ForwardIterator` is `Epick_d::Point_d`. \tparam ForwardIterator has `Epick_d::Point_d` as value type.
*/ */
template<typename ForwardIterator> template<typename ForwardIterator>
Point_d operator()(ForwardIterator first, ForwardIterator last); Point_d operator()(ForwardIterator first, ForwardIterator last);
@ -87,7 +87,7 @@ Point_d operator()(ForwardIterator first, ForwardIterator last);
struct Compute_squared_radius_d { struct Compute_squared_radius_d {
/*! returns the radius of the sphere defined by `A=tuple[first,last)`. The sphere is centered in the affine hull of A and passes through all the points of A. The order of the points of A does not matter. /*! returns the radius of the sphere defined by `A=tuple[first,last)`. The sphere is centered in the affine hull of A and passes through all the points of A. The order of the points of A does not matter.
\pre A is affinely independant. \pre A is affinely independant.
\cgalRequires The value type of `ForwardIterator` is `Epick_d::Point_d`. \tparam ForwardIterator has `Epick_d::Point_d` as value type.
*/ */
template<class ForwardIterator> template<class ForwardIterator>
Point_d operator()(ForwardIterator first, ForwardIterator last); Point_d operator()(ForwardIterator first, ForwardIterator last);
@ -97,7 +97,7 @@ Point_d operator()(ForwardIterator first, ForwardIterator last);
struct Side_of_bounded_sphere_d { struct Side_of_bounded_sphere_d {
/*! returns the relative position of point p to the sphere defined by `A=tuple[first,last)`. The sphere is centered in the affine hull of A and passes through all the points of A. The order of the points of A does not matter. /*! returns the relative position of point p to the sphere defined by `A=tuple[first,last)`. The sphere is centered in the affine hull of A and passes through all the points of A. The order of the points of A does not matter.
\pre A is affinely independant. \pre A is affinely independant.
\cgalRequires The value type of `ForwardIterator` is `Epick_d::Point_d`. \tparam ForwardIterator has `Epick_d::Point_d` as value type.
*/ */
template<class ForwardIterator> template<class ForwardIterator>
Bounded_side operator()(ForwardIterator first, ForwardIterator last, const Point_d&p); Bounded_side operator()(ForwardIterator first, ForwardIterator last, const Point_d&p);

View File

@ -73,7 +73,7 @@ Direction_d<Kernel>(Vector_d<Kernel> v);
introduces a variable `dir` of type `Direction_d<Kernel>` in introduces a variable `dir` of type `Direction_d<Kernel>` in
dimension `d` with representation tuple `set [first,last)`. dimension `d` with representation tuple `set [first,last)`.
\pre `d` is nonnegative, `[first,last)` has `d` elements. \pre `d` is nonnegative, `[first,last)` has `d` elements.
\cgalRequires The value type of `InputIterator` is `RT`. \tparam InputIterator has `RT` as value type.
*/ */
template <class InputIterator> template <class InputIterator>
Direction_d<Kernel>(int d, InputIterator first, InputIterator last); Direction_d<Kernel>(int d, InputIterator first, InputIterator last);

View File

@ -65,7 +65,7 @@ introduces a
variable `h` of type `Hyperplane_d<Kernel>` initialized to the variable `h` of type `Hyperplane_d<Kernel>` initialized to the
hyperplane with coefficients `set [first,last)` and `D`. hyperplane with coefficients `set [first,last)` and `D`.
\pre `size [first,last) == d`. \pre `size [first,last) == d`.
\cgalRequires The value type of InputIterator is `RT`. \tparam InputIterator has `RT` as value type.
*/ */
template <class InputIterator> Hyperplane_d<Kernel>(int d, template <class InputIterator> Hyperplane_d<Kernel>(int d,
InputIterator first, InputIterator last, RT D); InputIterator first, InputIterator last, RT D);
@ -76,7 +76,7 @@ introduces a variable
with coefficients `set [first,last)`. with coefficients `set [first,last)`.
\pre `size [first,last) == d+1`. \pre `size [first,last) == d+1`.
\cgalRequires The value type of InputIterator is `RT`. \tparam InputIterator has `RT` as value type.
*/ */
template <class InputIterator> Hyperplane_d<Kernel>(int d, template <class InputIterator> Hyperplane_d<Kernel>(int d,
InputIterator first, InputIterator last); InputIterator first, InputIterator last);
@ -88,7 +88,7 @@ some hyperplane that passes through the points in `set [first,last)`. If `side`
constructed hyperplane. constructed hyperplane.
\pre A hyperplane with the stated properties must exist. \pre A hyperplane with the stated properties must exist.
\cgalRequires The value type of `ForwardIterator` is `Point_d<Kernel>`. \tparam ForwardIterator has `Point_d<Kernel>` as value type.
*/ */
template <class ForwardIterator> template <class ForwardIterator>
Hyperplane_d<Kernel>(ForwardIterator first, ForwardIterator last, Hyperplane_d<Kernel>(ForwardIterator first, ForwardIterator last,

View File

@ -80,7 +80,7 @@ specifies the homogeneous coordinates
where the sign chosen is the sign of \f$ h_d\f$. where the sign chosen is the sign of \f$ h_d\f$.
\pre `d` is nonnegative, `[first,last)` has `d` or `d+1` elements where the last has to be non-zero. \pre `d` is nonnegative, `[first,last)` has `d` or `d+1` elements where the last has to be non-zero.
\cgalRequires The value type of `InputIterator` is `RT`. \tparam InputIterator has `RT` as value type.
*/ */
template <class InputIterator> Point_d<Kernel>(int d, template <class InputIterator> Point_d<Kernel>(int d,
InputIterator first, InputIterator last); InputIterator first, InputIterator last);
@ -94,7 +94,7 @@ initialized to the point with homogeneous coordinates as defined by
The sign chosen is the sign of \f$ D\f$. The sign chosen is the sign of \f$ D\f$.
\pre `D` is non-zero, the iterator range defines a \f$ d\f$-tuple of `RT`. \pre `D` is non-zero, the iterator range defines a \f$ d\f$-tuple of `RT`.
\cgalRequires The value type of `InputIterator` is `RT`. \tparam InputIterator has `RT` as value type.
*/ */
template <class InputIterator> Point_d<Kernel>(int d, template <class InputIterator> Point_d<Kernel>(int d,
InputIterator first, InputIterator last, RT D); InputIterator first, InputIterator last, RT D);

View File

@ -61,7 +61,7 @@ sphere through the points in `A = tuple [first,last)`.
\pre \f$A\f$ consists of \f$d+1\f$ \f$d\f$-dimensional points. \pre \f$A\f$ consists of \f$d+1\f$ \f$d\f$-dimensional points.
\cgalRequires The value type of ForwardIterator is `Point_d<Kernel>`. \tparam ForwardIterator has `Point_d<Kernel>` as value type.
*/ */
template <class ForwardIterator> Sphere_d<Kernel>(int d, template <class ForwardIterator> Sphere_d<Kernel>(int d,
ForwardIterator first, ForwardIterator last); ForwardIterator first, ForwardIterator last);

View File

@ -87,7 +87,7 @@ coordinates `set [first,last)`. If `size [first,last) == p+1` the range specifie
sign chosen is the sign of \f$ h_d\f$. sign chosen is the sign of \f$ h_d\f$.
\pre `d` is nonnegative, `[first,last)` has `d` or `d+1` elements where the last has to be non-zero. \pre `d` is nonnegative, `[first,last)` has `d` or `d+1` elements where the last has to be non-zero.
\cgalRequires The value type of `InputIterator` is `RT`. \tparam InputIterator has `RT` as value type.
*/ */
template <class InputIterator> Vector_d<Kernel>(int d, template <class InputIterator> Vector_d<Kernel>(int d,
InputIterator first, InputIterator last); InputIterator first, InputIterator last);
@ -101,7 +101,7 @@ initialized to the vector with homogeneous coordinates as defined by
chosen is the sign of \f$ D\f$. chosen is the sign of \f$ D\f$.
\pre `D` is non-zero, the iterator range defines a \f$ d\f$-tuple of `RT`. \pre `D` is non-zero, the iterator range defines a \f$ d\f$-tuple of `RT`.
\cgalRequires The value type of `InputIterator` is `RT`. \tparam InputIterator has `RT` as value type.
*/ */
template <class InputIterator> Vector_d<Kernel>(int d, template <class InputIterator> Vector_d<Kernel>(int d,
InputIterator first, InputIterator last, RT D); InputIterator first, InputIterator last, RT D);

View File

@ -10,7 +10,7 @@ algebra for Euclidean ring number types `RT`.
\cgalModels `LinearAlgebraTraits_d` \cgalModels `LinearAlgebraTraits_d`
\cgalRequires To make a ring number type `RT` work with this class it has to To make a ring number type `RT` work with this class it has to
provide a division `operator/` with remainder. provide a division `operator/` with remainder.
\cgalHeading{Operations} \cgalHeading{Operations}

View File

@ -9,7 +9,7 @@ namespace CGAL {
returns the center of the sphere spanned by the points in `A = tuple[first,last)`. returns the center of the sphere spanned by the points in `A = tuple[first,last)`.
\pre \f$ A\f$ contains \f$ d+1\f$ affinely independent points of dimension \f$ d\f$. \pre \f$ A\f$ contains \f$ d+1\f$ affinely independent points of dimension \f$ d\f$.
\cgalRequires The value type of `ForwardIterator` is `Point_d<R>`. \tparam ForwardIterator has `Point_d<R>` as value type.
*/ */
template <class ForwardIterator> Point_d<R> template <class ForwardIterator> Point_d<R>
center_of_sphere(ForwardIterator first, ForwardIterator last); center_of_sphere(ForwardIterator first, ForwardIterator last);
@ -34,7 +34,7 @@ it via an iterator range starting in `result`. The returned
iterator marks the end of the output. iterator marks the end of the output.
\pre \f$ A\f$ contains vectors of the same dimension \f$ d\f$. \pre \f$ A\f$ contains vectors of the same dimension \f$ d\f$.
\cgalRequires The value type of `ForwardIterator` and `OutputIterator` is `Vector_d<R>`. \tparam ForwardIterator has `Vector_d<R>` as value type.
*/ */
template <class ForwardIterator, class OutputIterator> template <class ForwardIterator, class OutputIterator>
OutputIterator linear_base(ForwardIterator first, ForwardIterator OutputIterator linear_base(ForwardIterator first, ForwardIterator

View File

@ -10,7 +10,7 @@ returns true iff the points in `A = tuple [first,last)` are
affinely independent. affinely independent.
\pre The objects are of the same dimension. \pre The objects are of the same dimension.
\cgalRequires The value type of `ForwardIterator` is `Point_d<R>` \tparam ForwardIterator has `Point_d<R>` as value type.
*/ */
template <class ForwardIterator> bool template <class ForwardIterator> bool
affinely_independent(ForwardIterator first, ForwardIterator last); affinely_independent(ForwardIterator first, ForwardIterator last);
@ -22,7 +22,7 @@ affinely_independent(ForwardIterator first, ForwardIterator last);
computes computes
the affine rank of the points in `A = tuple [first,last)`. the affine rank of the points in `A = tuple [first,last)`.
\pre The objects in \f$ A\f$ are of the same dimension. \pre The objects in \f$ A\f$ are of the same dimension.
\cgalRequires The value type of `ForwardIterator` is `Point_d<R>`. \tparam ForwardIterator has `Point_d<R>` as value type.
*/ */
template <class ForwardIterator> int template <class ForwardIterator> int
affine_rank(ForwardIterator first, ForwardIterator last); affine_rank(ForwardIterator first, ForwardIterator last);
@ -49,7 +49,7 @@ determines whether \f$ p\f$ is contained in
the affine hull of the points in `A = tuple [first,last)`. the affine hull of the points in `A = tuple [first,last)`.
\pre The objects in `A` are of the same dimension. \pre The objects in `A` are of the same dimension.
\cgalRequires The value type of `ForwardIterator` is `Point_d<R>`. \tparam ForwardIterator has `Point_d<R>` as value type.
*/ */
template <class ForwardIterator> bool template <class ForwardIterator> bool
contained_in_affine_hull( ForwardIterator first, ForwardIterator contained_in_affine_hull( ForwardIterator first, ForwardIterator
@ -63,7 +63,7 @@ determines whether \f$ v\f$ is contained
in the linear hull of the vectors in `A = tuple [first,last)`. in the linear hull of the vectors in `A = tuple [first,last)`.
\pre The objects in \f$ A\f$ are of the same dimension. \pre The objects in \f$ A\f$ are of the same dimension.
\cgalRequires The value type of `ForwardIterator` is `Vector_d<R>`. \tparam ForwardIterator has `Vector_d<R>` as value type.
*/ */
template <class ForwardIterator> bool template <class ForwardIterator> bool
contained_in_linear_hull( ForwardIterator first, ForwardIterator contained_in_linear_hull( ForwardIterator first, ForwardIterator
@ -78,7 +78,7 @@ simplex of the points in `A = tuple [first,last)`.
\pre The objects in \f$ A\f$ are of the same dimension and affinely \pre The objects in \f$ A\f$ are of the same dimension and affinely
independent. independent.
\cgalRequires The value type of `ForwardIterator` is `Point_d<R>`. \tparam ForwardIterator has `Point_d<R>` as value type.
*/ */
template <class ForwardIterator> bool template <class ForwardIterator> bool
contained_in_simplex( ForwardIterator first, ForwardIterator last, contained_in_simplex( ForwardIterator first, ForwardIterator last,
@ -118,7 +118,7 @@ decides whether the vectors in `A = tuple [first,last)`
are linearly independent. are linearly independent.
\pre The objects in `A` are of the same dimension. \pre The objects in `A` are of the same dimension.
\cgalRequires The value type of `ForwardIterator` is `Vector_d<R>`. \tparam ForwardIterator has `Vector_d<R>` as value type.
*/ */
template <class ForwardIterator> bool template <class ForwardIterator> bool
linearly_independent( ForwardIterator first, ForwardIterator linearly_independent( ForwardIterator first, ForwardIterator
@ -131,7 +131,7 @@ last);
computes computes
the linear rank of the vectors in `A = tuple [first,last)`. the linear rank of the vectors in `A = tuple [first,last)`.
\pre The objects are of the same dimension. \pre The objects are of the same dimension.
\cgalRequires The value type of `ForwardIterator` is `Vector_d<R>`. \tparam ForwardIterator has `Vector_d<R>` as value type.
*/ */
template <class ForwardIterator> int template <class ForwardIterator> int
linear_rank(ForwardIterator first, ForwardIterator last); linear_rank(ForwardIterator first, ForwardIterator last);
@ -150,7 +150,7 @@ where `A[i]` denotes the %Cartesian coordinate vector of
the \f$ i\f$-th point in \f$ A\f$. the \f$ i\f$-th point in \f$ A\f$.
\pre `size [first,last) == d+1` and `A[i].dimension() == d` \f$ \forall0 \leq i \leq d\f$. \pre `size [first,last) == d+1` and `A[i].dimension() == d` \f$ \forall0 \leq i \leq d\f$.
\cgalRequires The value type of `ForwardIterator` is `Point_d<R>`. \tparam ForwardIterator has `Point_d<R>` as value type.
*/ */
template <class ForwardIterator> Orientation template <class ForwardIterator> Orientation
@ -165,7 +165,7 @@ returns the relative position of point
order of the points of \f$ A\f$ does not matter. order of the points of \f$ A\f$ does not matter.
\pre `orientation(first,last)` is not `ZERO`. \pre `orientation(first,last)` is not `ZERO`.
\cgalRequires The value type of `ForwardIterator` is `Point_d<R>`. \tparam ForwardIterator has `Point_d<R>` as value type.
*/ */
template <class ForwardIterator> Bounded_side template <class ForwardIterator> Bounded_side
side_of_bounded_sphere( ForwardIterator first, ForwardIterator last, side_of_bounded_sphere( ForwardIterator first, ForwardIterator last,
@ -182,7 +182,7 @@ constructed sphere. If the points in \f$ A\f$ are positively oriented,
the positive side is the bounded interior of the sphere. the positive side is the bounded interior of the sphere.
\pre `A` contains \f$ d+1\f$ points in \f$ d\f$-space. \pre `A` contains \f$ d+1\f$ points in \f$ d\f$-space.
\cgalRequires The value type of `ForwardIterator` is `Point_d<R>`. \tparam ForwardIterator has `Point_d<R>` as value type.
*/ */
template <class ForwardIterator> Oriented_side template <class ForwardIterator> Oriented_side
side_of_oriented_sphere( ForwardIterator first, ForwardIterator side_of_oriented_sphere( ForwardIterator first, ForwardIterator

View File

@ -17,7 +17,7 @@ computes
the affine rank of the points in `A = tuple [first,last)`. the affine rank of the points in `A = tuple [first,last)`.
\pre The objects are of the same dimension. \pre The objects are of the same dimension.
\cgalRequires The value type of `ForwardIterator` is `Kernel_d::Point_d`. \tparam ForwardIterator is a model of `ForwardIterator` with `Kernel_d::Point_d` as value type.
*/ */
template <class ForwardIterator> int template <class ForwardIterator> int
operator()(ForwardIterator first, ForwardIterator last); operator()(ForwardIterator first, ForwardIterator last);

View File

@ -18,7 +18,8 @@ independent.
\pre The objects are of the same dimension. \pre The objects are of the same dimension.
\cgalRequires The value type of `ForwardIterator` is `Kernel_d::Point_d`. \tparam ForwardIterator has `Kernel_d::Point_d` as value type.
*/ */
template <class ForwardIterator> bool template <class ForwardIterator> bool
operator()(ForwardIterator first, ForwardIterator last); operator()(ForwardIterator first, ForwardIterator last);

View File

@ -14,7 +14,7 @@ public:
returns the returns the
center of the sphere spanned by the points in `A = tuple [first,last)`. center of the sphere spanned by the points in `A = tuple [first,last)`.
\pre \f$A\f$ contains \f$d+1\f$ affinely independent points of dimension \f$d\f$. \pre \f$A\f$ contains \f$d+1\f$ affinely independent points of dimension \f$d\f$.
\cgalRequires The value type of `ForwardIterator` is `Kernel_d::Point_d`. \tparam ForwardIterator has `Kernel_d::Point_d` as value type.
*/ */
template <class ForwardIterator> Kernel_d::Point_d template <class ForwardIterator> Kernel_d::Point_d
operator()(ForwardIterator first, ForwardIterator last); operator()(ForwardIterator first, ForwardIterator last);

View File

@ -17,7 +17,7 @@ determines whether \f$ p\f$ is contained in the
affine hull of the points in `A = tuple [first,last)`. affine hull of the points in `A = tuple [first,last)`.
\pre The objects are of the same dimension. \pre The objects are of the same dimension.
\cgalRequires The value type of `ForwardIterator` is `Kernel_d::Point_d`. \tparam ForwardIterator has `Kernel_d::Point_d` as value type.
*/ */
template <class ForwardIterator> Bounded_side template <class ForwardIterator> Bounded_side
operator()( ForwardIterator first, ForwardIterator last, const operator()( ForwardIterator first, ForwardIterator last, const

View File

@ -16,7 +16,7 @@ public:
determines whether \f$ v\f$ is contained in the determines whether \f$ v\f$ is contained in the
linear hull of the vectors in `A = tuple [first,last)`. linear hull of the vectors in `A = tuple [first,last)`.
\pre The objects are of the same dimension. \pre The objects are of the same dimension.
\cgalRequires The value type of `ForwardIterator` is `Kernel_d::Vector_d`. \tparam ForwardIterator has `Kernel_d::Vector_d` as value type.
*/ */
template <class ForwardIterator> Bounded_side template <class ForwardIterator> Bounded_side
operator()( ForwardIterator first, ForwardIterator last, const operator()( ForwardIterator first, ForwardIterator last, const

View File

@ -17,7 +17,7 @@ determines whether \f$ p\f$ is contained in the
simplex of the points in `A = tuple [first,last)`. simplex of the points in `A = tuple [first,last)`.
\pre The objects in \f$ A\f$ are of the same dimension and affinely independent. \pre The objects in \f$ A\f$ are of the same dimension and affinely independent.
\cgalRequires The value type of `ForwardIterator` is `Kernel_d::Point_d`. \tparam ForwardIterator has `Kernel_d::Point_d` as value type.
*/ */
template <class ForwardIterator> Bounded_side template <class ForwardIterator> Bounded_side
operator()( ForwardIterator first, ForwardIterator last, const operator()( ForwardIterator first, ForwardIterator last, const

View File

@ -19,7 +19,8 @@ it via an iterator range starting in `result`. The returned
iterator marks the end of the output. iterator marks the end of the output.
\pre \f$ A\f$ contains vectors of the same dimension \f$ d\f$. \pre \f$ A\f$ contains vectors of the same dimension \f$ d\f$.
\cgalRequires The value type of `ForwardIterator` and `OutputIterator` is `Kernel_d::Vector_d`. \tparam InputIterator has `Kernel_d::Vector_d` as value type.
\tparam OutputIterator accepts objects of type `Kernel_d::Vector_d`.
*/ */
template <class template <class
ForwardIterator, class OutputIterator> int ForwardIterator, class OutputIterator> int

View File

@ -17,7 +17,7 @@ computes
the linear rank of the vectors in `A = tuple [first,last)`. the linear rank of the vectors in `A = tuple [first,last)`.
\pre \f$ A\f$ contains vectors of the same dimension \f$ d\f$. \pre \f$ A\f$ contains vectors of the same dimension \f$ d\f$.
\cgalRequires The value type of `ForwardIterator` is `Kernel_d::Vector_d`. \tparam ForwardIterator has `Kernel_d::Vector_d` as value type.
*/ */
template <class ForwardIterator> int template <class ForwardIterator> int
operator()(ForwardIterator first, ForwardIterator last); operator()(ForwardIterator first, ForwardIterator last);

View File

@ -18,7 +18,7 @@ whether the vectors in `A = tuple [first,last)` are linearly
independent. independent.
\pre The objects in `A` are of the same dimension. \pre The objects in `A` are of the same dimension.
\cgalRequires The value type of `ForwardIterator` is `Kernel_d::Vector_d`. \tparam ForwardIterator has `Kernel_d::Vector_d` as value type.
*/ */
template <class ForwardIterator> bool template <class ForwardIterator> bool
operator()(ForwardIterator first, ForwardIterator last); operator()(ForwardIterator first, ForwardIterator last);

View File

@ -24,7 +24,7 @@ where `A[i]` denotes the %Cartesian coordinate vector of
the \f$ i\f$-th point in \f$ A\f$. the \f$ i\f$-th point in \f$ A\f$.
\pre `size [first,last) == d+1` and `A[i].dimension() == d` \f$ \forall0 \leq i \leq d\f$. \pre `size [first,last) == d+1` and `A[i].dimension() == d` \f$ \forall0 \leq i \leq d\f$.
\cgalRequires The value type of `ForwardIterator` is `Kernel_d::Point_d`. \tparam ForwardIterator has `Kernel_d::Point_d` as value type.
*/ */
template <class ForwardIterator> template <class ForwardIterator>
Orientation operator()(ForwardIterator first, ForwardIterator last); Orientation operator()(ForwardIterator first, ForwardIterator last);

View File

@ -18,7 +18,7 @@ returns the relative position of point
order of the points of \f$ A\f$ does not matter. order of the points of \f$ A\f$ does not matter.
\pre `orientation(first,last)` is not `ZERO`. \pre `orientation(first,last)` is not `ZERO`.
\cgalRequires The value type of `ForwardIterator` is `Kernel_d::Point_d`. \tparam ForwardIterator has `Kernel_d::Point_d` as value type.
*/ */
template <class ForwardIterator> Bounded_side template <class ForwardIterator> Bounded_side
operator()( ForwardIterator first, ForwardIterator last, const operator()( ForwardIterator first, ForwardIterator last, const

View File

@ -20,7 +20,7 @@ sphere. If the points in \f$ A\f$ are positively oriented, the positive
side is the bounded interior of the sphere. side is the bounded interior of the sphere.
\pre `A` contains \f$ d+1\f$ points in \f$ d\f$-space. \pre `A` contains \f$ d+1\f$ points in \f$ d\f$-space.
\cgalRequires The value type of `ForwardIterator` is `Kernel_d::Point_d`. \tparam ForwardIterator has `Kernel_d::Point_d` as value type.
*/ */
template <class ForwardIterator> Oriented_side template <class ForwardIterator> Oriented_side
operator()( ForwardIterator first, ForwardIterator last, const operator()( ForwardIterator first, ForwardIterator last, const

View File

@ -60,7 +60,7 @@ Vector(int d, NT x);
creates an creates an
instance `v` of type `Vector`; `v` is initialized to the instance `v` of type `Vector`; `v` is initialized to the
vector with entries `set [first,last)`. vector with entries `set [first,last)`.
\cgalRequires `Forward_iterator` has value type `NT`. \tparam ForwardIterator has `NT` as value type.
*/ */
template <class Forward_iterator> template <class Forward_iterator>
Vector(Forward_iterator first, Forward_iterator last); Vector(Forward_iterator first, Forward_iterator last);

View File

@ -10,7 +10,7 @@ models of the `CellAttributeWithPoint` concept.
\cgalRefines `CombinatorialMapItems` \cgalRefines `CombinatorialMapItems`
\cgalRequires The first type in \ref CombinatorialMapItems::Dart_wrapper "Attributes" must be a model of the The first type in \ref CombinatorialMapItems::Dart_wrapper "Attributes" must be a model of the
`CellAttributeWithPoint` concept. `CellAttributeWithPoint` concept.
\cgalHasModel \ref CGAL::Linear_cell_complex_min_items "CGAL::Linear_cell_complex_min_items<d>" \cgalHasModel \ref CGAL::Linear_cell_complex_min_items "CGAL::Linear_cell_complex_min_items<d>"

View File

@ -8,7 +8,7 @@ The class `Dynamic_matrix` is an adaptor for an arbitrary
matrix class `M` to provide the dynamic operations needed for monotone matrix class `M` to provide the dynamic operations needed for monotone
matrix search. matrix search.
\cgalRequires `M` is a model for `BasicMatrix`. \tparam `M` is a model of `BasicMatrix`.
\cgalModels `MonotoneMatrixSearchTraits` \cgalModels `MonotoneMatrixSearchTraits`
\cgalModels `BasicMatrix` \cgalModels `BasicMatrix`

View File

@ -36,9 +36,9 @@ monotone).
\pre `t` points to a structure of size at least `m.number_of_rows()` \pre `t` points to a structure of size at least `m.number_of_rows()`
\cgalRequires `Matrix` is a model for `MonotoneMatrixSearchTraits`. \tparam Matrix is a model of `MonotoneMatrixSearchTraits`.
\cgalRequires Value type of `RandomAccessIC` is `int`. \tparam RandomAccessIC is a model of `RandomAccessIterator` with `int` as value type.
\cgalRequires If `compare_strictly` is defined, it is an adaptable If `compare_strictly` is defined, it is an adaptable
binary function: `Matrix::Value` \f$ \times\f$ binary function: `Matrix::Value` \f$ \times\f$
`Matrix::Value` \f$ \rightarrow\f$ `bool` describing a strict `Matrix::Value` \f$ \rightarrow\f$ `bool` describing a strict
(non-reflexive) total ordering on `Matrix::Value`. (non-reflexive) total ordering on `Matrix::Value`.

View File

@ -45,8 +45,8 @@ to `Traits::compare_non_strictly`.
true. true.
</OL> </OL>
\cgalRequires `Traits` is a model for `SortedMatrixSearchTraits`. \tparam Traits is a model for `SortedMatrixSearchTraits`.
\cgalRequires Value type of `RandomAccessIterator` is `Traits::Matrix`. \tparam RandomAccessIterator has `Traits::Matrix` as value type.
\cgalHeading{Implementation} \cgalHeading{Implementation}

View File

@ -267,11 +267,10 @@ constrained edges of `t`, except for the unbounded component.
\tparam CDT must be 2D constrained Delaunay triangulation \tparam CDT must be 2D constrained Delaunay triangulation
and its geometric traits class must be a model of `DelaunayMeshTraits_2`. and its geometric traits class must be a model of `DelaunayMeshTraits_2`.
The face of the constrained Delaunay triangulation must be a model of the concept `DelaunayMeshFaceBase_2`.
\tparam Criteria must be a model of the concept `MeshingCriteria_2`. \tparam Criteria must be a model of the concept `MeshingCriteria_2`.
`Criteria::Face_handle` must be the same as `CDT::Face_handle`.
\cgalRequires The face of the constrained Delaunay triangulation must be a model of the concept `DelaunayMeshFaceBase_2`.
\cgalRequires `CDT::Face_handle` must be the same as `Criteria::Face_handle`.
*/ */
template<class CDT, class Criteria> template<class CDT, class Criteria>
void refine_Delaunay_mesh_2 (CDT &t, const Criteria& criteria = Criteria()); void refine_Delaunay_mesh_2 (CDT &t, const Criteria& criteria = Criteria());
@ -297,12 +296,12 @@ never meshed.
\tparam CDT must be 2D constrained Delaunay triangulation \tparam CDT must be 2D constrained Delaunay triangulation
and its geometric traits class must be a model of `DelaunayMeshTraits_2`. and its geometric traits class must be a model of `DelaunayMeshTraits_2`.
The face of the constrained Delaunay triangulation must be a model of the concept `DelaunayMeshFaceBase_2`.
\tparam Criteria must be a model of the concept `MeshingCriteria_2`. \tparam Criteria must be a model of the concept `MeshingCriteria_2`.
`Criteria::Face_handle` must be the same as `CDT::Face_handle`.
\tparam InputIterator must be an input iterator with value type `CDT::Geom_traits::Point_2`. \tparam InputIterator must be an input iterator with value type `CDT::Geom_traits::Point_2`.
\cgalRequires The face of the constrained Delaunay triangulation must be a model of the concept `DelaunayMeshFaceBase_2`.
\cgalRequires `CDT::Face_handle` must be the same as `Criteria::Face_handle`.
*/ */
template <class CDT, class Criteria, class InputIterator> template <class CDT, class Criteria, class InputIterator>

View File

@ -44,8 +44,7 @@ Handle_hash_function();
Returns unique hash value for any `Handle` Returns unique hash value for any `Handle`
type for which `&*key` gives a unique address. type for which `&*key` gives a unique address.
\cgalRequires The type The type `std::iterator_traits<Handle>::%value_type` has to be defined
`std::iterator_traits<Handle>::%value_type` has to be defined
(which it is already for pointers, handles, iterators, and (which it is already for pointers, handles, iterators, and
circulators). circulators).
*/ */

View File

@ -49,10 +49,10 @@ namespace CGAL {
/// `[first,last)`. In case of a tie, the point /// `[first,last)`. In case of a tie, the point
/// with the smallest `y`-coordinate is taken. /// with the smallest `y`-coordinate is taken.
/// ///
/// \cgalRequires `Traits` is a model of the concept `PolygonTraits_2`. /// \tparam Traits is a model of the concept `PolygonTraits_2`.
/// Only the members `Less_xy_2` and /// Only the members `Less_xy_2` and
/// `less_xy_2_object()` are used. /// `less_xy_2_object()` are used.
/// \cgalRequires The value type of `ForwardIterator` must be `Traits::Point_2`, /// \tparam ForwardIterator must have `Traits::Point_2` as value type.
/// ///
/// ///
/// \sa `CGAL::right_vertex_2()` /// \sa `CGAL::right_vertex_2()`
@ -68,11 +68,12 @@ ForwardIterator left_vertex_2(ForwardIterator first,
/// `[first,last)`. In case of a tie, the point /// `[first,last)`. In case of a tie, the point
/// with the largest `y`-coordinate is taken. /// with the largest `y`-coordinate is taken.
/// ///
/// \cgalRequires `Traits` is a model of the concept /// \tparam Traits is a model of the concept
/// `PolygonTraits_2`. /// `PolygonTraits_2`.
/// In fact, only the members `Less_xy_2` and /// In fact, only the members `Less_xy_2` and
/// `less_xy_2_object()` are used. /// `less_xy_2_object()` are used.
/// \cgalRequires The value type of `ForwardIterator` must be `Traits::Point_2`. /// \tparam ForwardIterator must have`Traits::Point_2` as value type.
///
/// ///
/// \sa `CGAL::left_vertex_2()` /// \sa `CGAL::left_vertex_2()`
/// \sa `CGAL::top_vertex_2()` /// \sa `CGAL::top_vertex_2()`
@ -87,11 +88,11 @@ ForwardIterator right_vertex_2(ForwardIterator first,
/// `[first,last)`. In case of a tie, the point /// `[first,last)`. In case of a tie, the point
/// with the largest `x`-coordinate is taken. /// with the largest `x`-coordinate is taken.
/// ///
/// \cgalRequires `Traits` is a model of the concept /// \tparam Traits is a model of the concept
/// `PolygonTraits_2`. /// `PolygonTraits_2`.
/// Only the members `Less_yx_2` and /// Only the members `Less_yx_2` and
/// `less_yx_2_object()` are used. /// `less_yx_2_object()` are used.
/// \cgalRequires The value type of `ForwardIterator` must be `Traits::Point_2`. /// \tparam ForwardIterator must have `Traits::Point_2` as value type.
/// ///
/// \sa `CGAL::left_vertex_2()` /// \sa `CGAL::left_vertex_2()`
/// \sa `CGAL::right_vertex_2()` /// \sa `CGAL::right_vertex_2()`
@ -106,11 +107,11 @@ ForwardIterator top_vertex_2(ForwardIterator first,
/// `[first,last)`. In case of a tie, the point /// `[first,last)`. In case of a tie, the point
/// with the smallest `x`-coordinate is taken. /// with the smallest `x`-coordinate is taken.
/// ///
/// \cgalRequires `Traits` is a model of the concept /// \tparam Traits is a model of the concept
/// `PolygonTraits_2`. /// `PolygonTraits_2`.
/// Only the members `Less_yx_2` and /// Only the members `Less_yx_2` and
/// `less_yx_2_object()` are used. /// `less_yx_2_object()` are used.
/// \cgalRequires The value type of `ForwardIterator` must be `Traits::Point_2`. /// \tparam ForwardIterator must have `Traits::Point_2` as value type.
/// ///
/// \sa `CGAL::left_vertex_2()` /// \sa `CGAL::left_vertex_2()`
/// \sa `CGAL::right_vertex_2()` /// \sa `CGAL::right_vertex_2()`
@ -129,14 +130,14 @@ ForwardIterator bottom_vertex_2(ForwardIterator first,
/// The functionality is also available by the `polygon_area_2()` function, which /// The functionality is also available by the `polygon_area_2()` function, which
/// returns the area instead of taking it as a parameter. /// returns the area instead of taking it as a parameter.
/// ///
/// \cgalRequires `Traits` is a model of the concept /// \tparam Traits is a model of the concept
/// `PolygonTraits_2`. /// `PolygonTraits_2`.
/// Only the following members of this traits class are used: /// Only the following members of this traits class are used:
/// - `Compute_area_2` : Computes the signed area of the /// - `Compute_area_2` : Computes the signed area of the
/// oriented triangle defined by 3 `Point_2` passed as arguments. /// oriented triangle defined by 3 `Point_2` passed as arguments.
/// - `FT` /// - `FT`
/// - `compute_area_2_object()` /// - `compute_area_2_object()`
/// \cgalRequires The value type of `ForwardIterator` must be `Traits::Point_2`. /// \tparam ForwardIterator must have `Traits::Point_2` as value type.
/// ///
/// \sa `CGAL::polygon_area_2()` /// \sa `CGAL::polygon_area_2()`
/// \sa `PolygonTraits_2` /// \sa `PolygonTraits_2`
@ -169,12 +170,12 @@ area_2( ForwardIterator first, ForwardIterator last,
/// The sign is positive for counterclockwise polygons, negative for /// The sign is positive for counterclockwise polygons, negative for
/// clockwise polygons. If the polygon is not simple, the area is not well defined. /// clockwise polygons. If the polygon is not simple, the area is not well defined.
/// ///
/// \cgalRequires `Traits` is a model of the concept `PolygonTraits_2`. Only the following members of this traits class are used: /// \tparam Traits is a model of the concept `PolygonTraits_2`. Only the following members of this traits class are used:
/// - `Compute_area_2` : Computes the signed area of the /// - `Compute_area_2` : Computes the signed area of the
/// oriented triangle defined by 3 `Point_2` passed as arguments. /// oriented triangle defined by 3 `Point_2` passed as arguments.
/// - `FT` /// - `FT`
/// - `compute_area_2_object` /// - `compute_area_2_object`
/// \cgalRequires `ForwardIterator::value_type` should be `Traits::Point_2`, /// \tparam ForwardIterator must have `Traits::Point_2` as value type.
/// ///
/// ///
/// \sa `PolygonTraits_2 ` /// \sa `PolygonTraits_2 `
@ -204,14 +205,14 @@ polygon_area_2( ForwardIterator first, ForwardIterator last,
/// Checks if the polygon is convex. /// Checks if the polygon is convex.
/// ///
/// \cgalRequires `Traits` is a model of the concept /// \tparam Traits is a model of the concept
/// `PolygonTraits_2`. /// `PolygonTraits_2`.
/// Only the following members of this traits class are used: /// Only the following members of this traits class are used:
/// - `Less_xy_2` /// - `Less_xy_2`
/// - `Orientation_2` /// - `Orientation_2`
/// - `less_xy_2_object` /// - `less_xy_2_object`
/// - `orientation_2_object` /// - `orientation_2_object`
/// \cgalRequires `ForwardIterator::value_type` should be `PolygonTraits::Point_2`, /// \tparam ForwardIterator must have `PolygonTraits::Point_2` as value type.
/// ///
/// \sa `PolygonTraits_2 ` /// \sa `PolygonTraits_2 `
/// \sa `CGAL::Polygon_2 ` /// \sa `CGAL::Polygon_2 `
@ -224,7 +225,7 @@ bool is_convex_2(ForwardIterator first,
/// iterator range `[first,last)` is simple, that is, if the edges /// iterator range `[first,last)` is simple, that is, if the edges
/// do not intersect, except consecutive edges in their common vertex. /// do not intersect, except consecutive edges in their common vertex.
/// ///
/// \cgalRequires `Traits` is a model of the concept /// \tparam Traits is a model of the concept
/// `PolygonTraits_2`. /// `PolygonTraits_2`.
/// Only the following members of this traits class are used: /// Only the following members of this traits class are used:
/// - `Point_2` /// - `Point_2`
@ -232,7 +233,7 @@ bool is_convex_2(ForwardIterator first,
/// - `Orientation_2` /// - `Orientation_2`
/// - `less_xy_2_object()` /// - `less_xy_2_object()`
/// - `orientation_2_object()` /// - `orientation_2_object()`
/// \cgalRequires The value type of `ForwardIterator` must be `PolygonTraits::Point_2`, /// \tparam ForwardIterator must have `PolygonTraits::Point_2` as value type.
/// ///
/// ### Implementation## /// ### Implementation##
/// ///
@ -252,7 +253,7 @@ bool is_simple_2(ForwardIterator first,
// instead of Point, but this is not allowed by g++ 2.7.2. // instead of Point, but this is not allowed by g++ 2.7.2.
/// ///
/// Computes on which side of a polygon a point lies. /// Computes on which side of a polygon a point lies.
/// \cgalRequires `Traits` is a model of the concept /// \tparam Traits is a model of the concept
/// `PolygonTraits_2`. /// `PolygonTraits_2`.
/// Only the following members of this traits class are used: /// Only the following members of this traits class are used:
/// - `Less_xy_2` /// - `Less_xy_2`
@ -263,7 +264,7 @@ bool is_simple_2(ForwardIterator first,
/// - `compare_x_2_object()` /// - `compare_x_2_object()`
/// - `compare_y_2_object()` /// - `compare_y_2_object()`
/// - `orientation_2_object()` /// - `orientation_2_object()`
/// \cgalRequires The value type of `ForwardIterator` must be `PolygonTraits::Point_2`, /// \tparam ForwardIterator must have `PolygonTraits::Point_2` as value type.
/// ///
/// \sa `PolygonTraits_2` /// \sa `PolygonTraits_2`
/// \sa `CGAL::bounded_side_2()` /// \sa `CGAL::bounded_side_2()`
@ -286,7 +287,7 @@ Oriented_side oriented_side_2(ForwardIterator first,
/// According to the definition points in the bounded region are inside the polygon. /// According to the definition points in the bounded region are inside the polygon.
/// ///
/// ///
/// \cgalRequires `Traits` is a model of the concept /// \tparam Traits is a model of the concept
/// `PolygonTraits_2`. /// `PolygonTraits_2`.
/// Only the following members of this traits class are used: /// Only the following members of this traits class are used:
/// - `Compare_x_2` /// - `Compare_x_2`
@ -295,7 +296,7 @@ Oriented_side oriented_side_2(ForwardIterator first,
/// - `compare_x_2_object()` /// - `compare_x_2_object()`
/// - `compare_y_2_object()` /// - `compare_y_2_object()`
/// - `orientation_2_object()` /// - `orientation_2_object()`
/// \cgalRequires The value type of `ForwardIterator` must be `Traits::Point_2`, /// \tparam ForwardIterator must have `Traits::Point_2` as value type.
/// ///
/// ### Implementation ### /// ### Implementation ###
/// ///
@ -318,13 +319,13 @@ Bounded_side bounded_side_2(ForwardIterator first,
/// Computes if a polygon is clockwise or counterclockwise oriented. /// Computes if a polygon is clockwise or counterclockwise oriented.
/// \pre `is_simple_2(first, last, traits);` /// \pre `is_simple_2(first, last, traits);`
/// ///
/// \cgalRequires `Traits` is a model of the concept /// \tparam Traits is a model of the concept
/// `PolygonTraits_2`. /// `PolygonTraits_2`.
/// Only the following members of this traits class are used: /// Only the following members of this traits class are used:
/// - `Less_xy_2` /// - `Less_xy_2`
/// - `less_xy_2_object()` /// - `less_xy_2_object()`
/// - `orientation_2_object()` /// - `orientation_2_object()`
/// \cgalRequires The value type of `ForwardIterator` must be `Traits::Point_2`, /// \tparam ForwardIterator must have`Traits::Point_2` as value type.
/// ///
/// ///
/// ///

View File

@ -1238,7 +1238,7 @@ public:
facet removed and the time to compute `h->%prev()`. facet removed and the time to compute `h->%prev()`.
\pre The degree of both vertices incident to `h` is at least three (no antennas). \pre The degree of both vertices incident to `h` is at least three (no antennas).
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
\image html euler_facet.png \image html euler_facet.png
\image latex euler_facet.png \image latex euler_facet.png
@ -1284,7 +1284,7 @@ n */
the time to compute `h->%prev()` and `h->%opposite()->%prev()`. the time to compute `h->%prev()` and `h->%opposite()->%prev()`.
\pre The size of both facets incident to `h` is at least four (no multi-edges). \pre The size of both facets incident to `h` is at least four (no multi-edges).
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
\image html euler_vertex.png \image html euler_vertex.png
\image latex euler_vertex.png \image latex euler_vertex.png
@ -1338,7 +1338,7 @@ n */
The time is proportional to the sum of the size of all incident facets. The time is proportional to the sum of the size of all incident facets.
\pre None of the incident facets of `g->vertex()` is a hole. There are at least two distinct facets incident to the facets that are incident to `g->vertex()`. (This prevents the operation from collapsing a volume into two facets glued together with opposite orientations, such as would happen with any vertex of a tetrahedron.) \pre None of the incident facets of `g->vertex()` is a hole. There are at least two distinct facets incident to the facets that are incident to `g->vertex()`. (This prevents the operation from collapsing a volume into two facets glued together with opposite orientations, such as would happen with any vertex of a tetrahedron.)
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
\image html euler_center.png \image html euler_center.png
\image latex euler_center.png \image latex euler_center.png
@ -1375,7 +1375,7 @@ n */
polyhedron unchanged. polyhedron unchanged.
\pre The facets denoted by `h` and `g` are different and have equal degree (i.e., number of edges). \pre The facets denoted by `h` and `g` are different and have equal degree (i.e., number of edges).
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
\image html euler_loop.png \image html euler_loop.png
\image latex euler_loop.png \image latex euler_loop.png
@ -1395,7 +1395,7 @@ n */
See `erase_facet(h)` for a more generalized variant. See `erase_facet(h)` for a more generalized variant.
\pre None of the incident halfedges of the facet is a border edge. \pre None of the incident halfedges of the facet is a border edge.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
*/ */
Halfedge_handle make_hole( Halfedge_handle h); Halfedge_handle make_hole( Halfedge_handle h);
@ -1450,7 +1450,7 @@ n */
See `make_hole(h)` for a more specialized variant. See `make_hole(h)` for a more specialized variant.
\pre `h->is_border() == false`. \pre `h->is_border() == false`.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true` `Supports_removal` must be `CGAL::Tag_true`
\image html add_facet1.png \image html add_facet1.png
\image latex add_facet1.png \image latex add_facet1.png
@ -1464,7 +1464,7 @@ n */
removes the vertices, halfedges, and facets that belong to the removes the vertices, halfedges, and facets that belong to the
connected component of `h`. connected component of `h`.
\cgalRequires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. `Supports_removal` must be `CGAL::Tag_true`.
*/ */
void erase_connected_component( Halfedge_handle h); void erase_connected_component( Halfedge_handle h);
@ -1473,7 +1473,7 @@ n */
Keep `nb_components_to_keep` largest connected components. Keep `nb_components_to_keep` largest connected components.
Returns the number of connected components erased (ignoring isolated vertices). Returns the number of connected components erased (ignoring isolated vertices).
\cgalRequires supports vertices, halfedges, and removal operation. The polyhedron type must support vertices, halfedges, and removal operations.
*/ */
unsigned int keep_largest_connected_components(unsigned int nb_components_to_keep); unsigned int keep_largest_connected_components(unsigned int nb_components_to_keep);

View File

@ -131,7 +131,8 @@ std::ostream& stream = std::cout);
initializes `poly_dist` to \f$ pd(P,Q)\f$ with \f$ P\f$ and \f$ Q\f$ being the initializes `poly_dist` to \f$ pd(P,Q)\f$ with \f$ P\f$ and \f$ Q\f$ being the
sets of points in the range [`p_first`,`p_last`) and sets of points in the range [`p_first`,`p_last`) and
[`q_first`,`q_last`), respectively. [`q_first`,`q_last`), respectively.
\cgalRequires The value type of `InputIterator1` and `InputIterator2` is `Point`. \tparam InputIterator1 has `Point` as value type.
\tparam InputIterator2 has `Point` as value type.
\pre All points have the same dimension. \pre All points have the same dimension.
\attention If `verbose` is set to \f$ 1\f$, \f$ 2\f$, or \attention If `verbose` is set to \f$ 1\f$, \f$ 2\f$, or
@ -270,7 +271,7 @@ Support_point_index_iterator support_points_q_indices_end( ) const;
/*! /*!
returns the realizing point of \f$ P\f$. returns the realizing point of \f$ P\f$.
\cgalRequires An implicit conversion from `ET` to `RT` is available. An implicit conversion from `ET` to `RT` must be available.
\pre \f$ pd(P,Q)\f$ is finite. \pre \f$ pd(P,Q)\f$ is finite.
*/ */
Point realizing_point_p( ) const; Point realizing_point_p( ) const;
@ -278,7 +279,7 @@ Point realizing_point_p( ) const;
/*! /*!
returns the realizing point of \f$ Q\f$. returns the realizing point of \f$ Q\f$.
\cgalRequires An implicit conversion from `ET` to `RT` is available. An implicit conversion from `ET` to `RT` must be available.
\pre \f$ pd(P,Q)\f$ is finite. \pre \f$ pd(P,Q)\f$ is finite.
*/ */
Point realizing_point_q( ) const; Point realizing_point_q( ) const;
@ -286,7 +287,7 @@ Point realizing_point_q( ) const;
/*! /*!
returns the squared distance of `poly_dist`, i.e.\ \f$ (pd(P,Q))^2\f$. returns the squared distance of `poly_dist`, i.e.\ \f$ (pd(P,Q))^2\f$.
\cgalRequires An implicit conversion from `ET` to `RT` is available. An implicit conversion from `ET` to `RT` must be available.
\pre \f$ pd(P,Q)\f$ is finite. \pre \f$ pd(P,Q)\f$ is finite.
*/ */
FT squared_distance( ) const; FT squared_distance( ) const;
@ -387,7 +388,8 @@ void clear( );
sets `poly_dist` to \f$ pd(P,Q)\f$ with \f$ P\f$ and \f$ Q\f$ being the sets of sets `poly_dist` to \f$ pd(P,Q)\f$ with \f$ P\f$ and \f$ Q\f$ being the sets of
points in the ranges [`p_first`,`p_last`) and points in the ranges [`p_first`,`p_last`) and
[`q_first`,`q_last`), respectively. [`q_first`,`q_last`), respectively.
\cgalRequires The value type of `InputIterator1` and `InputIterator2` is `Point`. \tparam InputIterator1 has `Point` as value type.
\tparam InputIterator2 has `Point` as value type.
\pre All points have the same dimension. \pre All points have the same dimension.
*/ */
template < class InputIterator1, class InputIterator2 > template < class InputIterator1, class InputIterator2 >
@ -400,7 +402,7 @@ InputIterator2 q_last );
sets `poly_dist` to \f$ pd(P,Q)\f$ with \f$ P\f$ being the set of points sets `poly_dist` to \f$ pd(P,Q)\f$ with \f$ P\f$ being the set of points
in the range [`p_first`,`p_last`) (\f$ Q\f$ remains unchanged). in the range [`p_first`,`p_last`) (\f$ Q\f$ remains unchanged).
\cgalRequires The value type of `InputIterator` is `Point`. \tparam InputIterator has `Point` as value type.
\pre All points in \f$ P\f$ have dimension `poly_dist``.ambient_dimension()` if \f$ Q\f$ is not empty. \pre All points in \f$ P\f$ have dimension `poly_dist``.ambient_dimension()` if \f$ Q\f$ is not empty.
*/ */
template < class InputIterator > template < class InputIterator >
@ -411,7 +413,7 @@ InputIterator p_last );
sets `poly_dist` to \f$ pd(P,Q)\f$ with \f$ Q\f$ being the set of points sets `poly_dist` to \f$ pd(P,Q)\f$ with \f$ Q\f$ being the set of points
in the range [`q_first`,`q_last`) (\f$ P\f$ remains unchanged). in the range [`q_first`,`q_last`) (\f$ P\f$ remains unchanged).
\cgalRequires The value type of `InputIterator` is `Point`. \tparam InputIterator has `Point` as value type.
\pre All points in \f$ Q\f$ have dimension `poly_dist``.ambient_dimension()` if \f$ P\f$ is not empty. \pre All points in \f$ Q\f$ have dimension `poly_dist``.ambient_dimension()` if \f$ P\f$ is not empty.
*/ */
template < class InputIterator > template < class InputIterator >
@ -437,7 +439,8 @@ void insert_q( const Point& q);
inserts the points in the range [`p_first`,`p_last`) inserts the points in the range [`p_first`,`p_last`)
and [`q_first`,`q_last`) into \f$ P\f$ and \f$ Q\f$, respectively, and [`q_first`,`q_last`) into \f$ P\f$ and \f$ Q\f$, respectively,
and recomputes the (squared) distance. and recomputes the (squared) distance.
\cgalRequires The value type of `InputIterator1` and `InputIterator2` is `Point`. \tparam InputIterator1 has `Point` as value type.
\tparam InputIterator2 has `Point` as value type.
\pre All points have the same dimension. If `poly_dist` is not \f$ pd(\emptyset, \emptyset)\f$, this dimension must be equal to `poly_dist``.ambient_dimension()`. \pre All points have the same dimension. If `poly_dist` is not \f$ pd(\emptyset, \emptyset)\f$, this dimension must be equal to `poly_dist``.ambient_dimension()`.
*/ */
template < class InputIterator1, class InputIterator2 > template < class InputIterator1, class InputIterator2 >
@ -450,7 +453,7 @@ InputIterator2 q_last );
inserts the points in the range [`p_first`,`p_last`) into inserts the points in the range [`p_first`,`p_last`) into
\f$ P\f$ and recomputes the (squared) distance (\f$ Q\f$ remains unchanged). \f$ P\f$ and recomputes the (squared) distance (\f$ Q\f$ remains unchanged).
\cgalRequires The value type of `InputIterator` is `Point`. \tparam InputIterator has `Point` as value type.
\pre All points have the same dimension. If `poly_dist` is not empty, this dimension must be equal to `poly_dist``.ambient_dimension()`. \pre All points have the same dimension. If `poly_dist` is not empty, this dimension must be equal to `poly_dist``.ambient_dimension()`.
*/ */
template < class InputIterator > template < class InputIterator >
@ -461,7 +464,7 @@ InputIterator p_last );
inserts the points in the range [`q_first`,`q_last`) into inserts the points in the range [`q_first`,`q_last`) into
\f$ Q\f$ and recomputes the (squared) distance (\f$ P\f$ remains unchanged). \f$ Q\f$ and recomputes the (squared) distance (\f$ P\f$ remains unchanged).
\cgalRequires The value type of `InputIterator` is `Point`. \tparam InputIterator has `Point` as value type.
\pre All points have the same dimension. If `poly_dist` is not empty, this dimension must be equal to `poly_dist``.ambient_dimension()`. \pre All points have the same dimension. If `poly_dist` is not empty, this dimension must be equal to `poly_dist``.ambient_dimension()`.
*/ */
template < class InputIterator > template < class InputIterator >
@ -509,7 +512,7 @@ const Traits& traits( ) const;
/*! /*!
writes `poly_dist` to output stream `os`. writes `poly_dist` to output stream `os`.
\cgalRequires The output operator is defined for `Point_d`. An overload of `operator<<` must be defined for `Point_d`.
\relates Polytope_distance_d \relates Polytope_distance_d
*/ */
std::ostream& std::ostream&
@ -518,7 +521,7 @@ operator << ( std::ostream& os, const Polytope_distance_d<Traits>& poly_dist);
/*! /*!
reads `poly_dist` from input stream `is`. reads `poly_dist` from input stream `is`.
\cgalRequires The input operator is defined for `Point_d`. An overload of `operator>>` must be defined for `Point_d`.
\relates Polytope_distance_d \relates Polytope_distance_d
*/ */
std::istream& std::istream&

View File

@ -126,7 +126,7 @@ creates a variable `width` initialized to the width of \f$ \mathcal{S}\f$ -
with \f$ \mathcal{S}\f$ being the set of points in the range with \f$ \mathcal{S}\f$ being the set of points in the range
[`first`,`beyond`). [`first`,`beyond`).
\cgalRequires The value type of `InputIterator` is `Point_3`. \tparam InputIterator has `Point_3` as value type.
*/ */
template < class InputIterator > template < class InputIterator >
Width_3( InputIterator first, InputIterator beyond); Width_3( InputIterator first, InputIterator beyond);
@ -137,7 +137,7 @@ the width of the polyhedron \f$ P\f$. Note that the vertex point coordinates
are altered! are altered!
\pre \f$ P\f$ is a convex polyhedron. \pre \f$ P\f$ is a convex polyhedron.
\cgalRequires `Polyhedron` is a \tparam Polyhedron is a
`CGAL::Polyhedron_3` with facets supporting plane equations `CGAL::Polyhedron_3` with facets supporting plane equations
where `Polyhedron::Point_3` \f$ \equiv\f$ `Point_3` and where `Polyhedron::Point_3` \f$ \equiv\f$ `Point_3` and
`Polyhedron::Plane_3` \f$ \equiv\f$ `Plane_3`. `Polyhedron::Plane_3` \f$ \equiv\f$ `Plane_3`.

View File

@ -33,8 +33,8 @@ CGAL::Kernel_traits<
>::Kernel >::Kernel
\endcode \endcode
\cgalRequires The value type of `InputIterator` must be \tparam InputIterator must have
`std::pair<K::Point_2, K::FT>` or `std::pair<K::Point_3, K::FT>`. `std::pair<K::Point_2, K::FT>` or `std::pair<K::Point_3, K::FT> as value type`.
\pre first != beyond, and the sum of the weights is non-zero. \pre first != beyond, and the sum of the weights is non-zero.
@ -50,8 +50,8 @@ points.
\returns `K::Point_2` or `K::Point_3` depending on the dimension of \returns `K::Point_2` or `K::Point_3` depending on the dimension of
the input values. the input values.
\cgalRequires The value type of `InputIterator` must be \tparam InputIterator must have
`std::pair<K::Point_2, K::FT>` or `std::pair<K::Point_3, K::FT>`. `std::pair<K::Point_2, K::FT>` or `std::pair<K::Point_3, K::FT>` as value type.
\pre first != beyond, and the sum of the weights is non-zero. \pre first != beyond, and the sum of the weights is non-zero.

View File

@ -45,7 +45,7 @@ comes in <I>dense</I> representation which includes zero entries.
\cgalHasModel `CGAL::Quadratic_program_from_mps<NT>` \cgalHasModel `CGAL::Quadratic_program_from_mps<NT>`
\cgalHasModel `CGAL::Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>` \cgalHasModel `CGAL::Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>`
\cgalRequires The value types of all iterator types (nested iterator The value types of all iterator types (nested iterator
types, respectively, for `A_iterator`) must be convertible to some types, respectively, for `A_iterator`) must be convertible to some
common `IntegralDomain` `ET`. common `IntegralDomain` `ET`.

View File

@ -48,7 +48,7 @@ comes in <I>dense</I> representation which includes zero entries.
\cgalHasModel `CGAL::Quadratic_program_from_mps<NT>` \cgalHasModel `CGAL::Quadratic_program_from_mps<NT>`
\cgalHasModel `CGAL::Nonnegative_quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>` \cgalHasModel `CGAL::Nonnegative_quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>`
\cgalRequires The value types of all iterator types (nested iterator The value types of all iterator types (nested iterator
types, respectively, for `A_iterator` and `D_iterator`) must be types, respectively, for `A_iterator` and `D_iterator`) must be
convertible to some common `IntegralDomain` `ET`. convertible to some common `IntegralDomain` `ET`.

View File

@ -50,7 +50,7 @@ comes in <I>dense</I> representation which includes zero entries.
\cgalHasModel `CGAL::Quadratic_program_from_mps<NT>` \cgalHasModel `CGAL::Quadratic_program_from_mps<NT>`
\cgalHasModel `CGAL::Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>` \cgalHasModel `CGAL::Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>`
\cgalRequires The value types of all iterator types (nested iterator The value types of all iterator types (nested iterator
types, respectively, for `A_iterator` and `D_iterator`) must be types, respectively, for `A_iterator` and `D_iterator`) must be
convertible to some common `IntegralDomain` `ET`. convertible to some common `IntegralDomain` `ET`.

View File

@ -75,8 +75,12 @@ especially for large and/or complex sequences.
second component refers to the maximal element in the range second component refers to the maximal element in the range
[`first`, `last`). [`first`, `last`).
\cgalRequires `CompareMin` and `CompareMax` are adaptable binary \tparam CompareMin is an adaptable binary
function objects: `VT` \f$ \times\f$ `VT` \f$ \rightarrow\f$ `bool` where `VT` function object: `VT` \f$ \times\f$ `VT` \f$ \rightarrow\f$ `bool` where `VT`
is the value type of `ForwardIterator`.
\tparam CompareMax is an adaptable binary
function object: `VT` \f$ \times\f$ `VT` \f$ \rightarrow\f$ `bool` where `VT`
is the value type of `ForwardIterator`. is the value type of `ForwardIterator`.
*/ */
template < class ForwardIterator, class CompareMin, template < class ForwardIterator, class CompareMin,

View File

@ -401,7 +401,7 @@ additional argument.
\cgalModels `OutputIterator` \cgalModels `OutputIterator`
\cgalRequires `Container` provides a member function `insert(const Container::const_reference&)`. \tparam Container provides a member function `insert(const Container::const_reference&)`.
*/ */
template< typename Container > template< typename Container >

View File

@ -161,7 +161,7 @@ constructs a quadruple such that
constructed from `v`, `third` is constructed from `w`, constructed from `v`, `third` is constructed from `w`,
and `fourth` is constructed from `x`. and `fourth` is constructed from `x`.
\cgalRequires Proper conversion operators exist from `U` to `T1`, `V` to `T2`, `W` to `T3`, and `X` to `T4`. Proper conversion operators must exist from `U` to `T1`, `V` to `T2`, `W` to `T3`, and `X` to `T4`.
*/ */
template <class U, class V, class W, class X> template <class U, class V, class W, class X>
Quadruple(U u, V v, W w, X x); Quadruple(U u, V v, W w, X x);
@ -357,7 +357,7 @@ Triple(T1 x, T2 y, T3 z);
constructs a triple such that `first` is constructed constructs a triple such that `first` is constructed
from `u`, `second` is constructed from `v`, and from `u`, `second` is constructed from `v`, and
`third` is constructed from `w`. `third` is constructed from `w`.
\cgalRequires Proper conversion operators exist from `U` to `T1`, `V` to `T2`, and `W` to `T3`. Proper conversion operators must exist from `U` to `T1`, `V` to `T2`, and `W` to `T3`.
*/ */
template <class U, class V, class W> Triple(U u, V v, template <class U, class V, class W> Triple(U u, V v,
W w); W w);

View File

@ -31,7 +31,7 @@ Multiscale_sort (const Sort &sort = Sort(), std::ptrdiff_t threshold = 1, double
/*! /*!
It sorts the range `[begin, end)`. It sorts the range `[begin, end)`.
\cgalRequires `Sort::operator()(RandomAccessIterator begin, RandomAccessIterator end)` is defined. `Sort::operator()(RandomAccessIterator begin, RandomAccessIterator end)` must be defined.
*/ */
template <class RandomAccessIterator> void operator() (RandomAccessIterator begin, RandomAccessIterator end) const; template <class RandomAccessIterator> void operator() (RandomAccessIterator begin, RandomAccessIterator end) const;

View File

@ -5,7 +5,7 @@ namespace CGAL {
converts a manifold surface reconstructed by `make_surface_mesh()` to a `Polyhedron_3<Traits>`. converts a manifold surface reconstructed by `make_surface_mesh()` to a `Polyhedron_3<Traits>`.
\cgalRequires the surface must be manifold. For this purpose, you may call The surface must be manifold. For this purpose, you may call
`make_surface_mesh()` with `Manifold_tag` or `make_surface_mesh()` with `Manifold_tag` or
`Manifold_with_boundary_tag` parameter. `Manifold_with_boundary_tag` parameter.

View File

@ -24,7 +24,7 @@ mesh traits
\tparam Function must be a of the concept `ImplicitFunction`. \tparam Function must be a of the concept `ImplicitFunction`.
\cgalRequires The number type `Function::FT` has to match The number type `Function::FT` has to match
the type `Traits::FT`. the type `Traits::FT`.
\cgalModels `Surface_3` \cgalModels `Surface_3`