mael's review

This commit is contained in:
Dmitry Anisimov 2021-06-01 12:26:57 +02:00
parent f63e34fca7
commit fe3317c92f
21 changed files with 103 additions and 133 deletions

View File

@ -6,7 +6,7 @@ namespace Weights {
\cgalConcept
A concept that describes the set of requirements of the template parameter
`GeomTraits` used to parameterize several classes and functions with 2D weights
`GeomTraits` used to parameterize several classes and functions
from the namespace `CGAL::Weights`.
\cgalHasModel
@ -34,23 +34,18 @@ typedef unspecified_type Comparison_result;
*/
typedef unspecified_type Orientation;
/*!
A model of `Kernel::Angle_2`.
*/
typedef unspecified_type Angle_2;
/// @}
/// \name Geometric Objects
/// @{
/*!
A model of `Kernel::Point_2`.
2D point type.
*/
typedef unspecified_type Point_2;
/*!
A model of `Kernel::Vector_2`.
2D vector type.
*/
typedef unspecified_type Vector_2;
@ -110,6 +105,8 @@ typedef unspecified_type Compute_determinant_2;
`%Point_2 operator()(const Point_2& p, const Point_2& q, const Point_2& r)`
that returns the center of the circle passing through the points `p`, `q`, and `r`.
\pre The points `p`, `q`, and `r` are not collinear.
*/
typedef unspecified_type Construct_circumcenter_2;

View File

@ -6,7 +6,7 @@ namespace Weights {
\cgalConcept
A concept that describes the set of requirements of the template parameter
`GeomTraits` used to parameterize several classes and functions with 3D weights
`GeomTraits` used to parameterize several classes and functions
from the namespace `CGAL::Weights`.
\cgalHasModel
@ -30,20 +30,15 @@ typedef unspecified_type FT;
/// @{
/*!
A model of `Kernel::Point_3`.
3D point type.
*/
typedef unspecified_type Point_3;
/*!
A model of `Kernel::Vector_3`.
3D vector type.
*/
typedef unspecified_type Vector_3;
/*!
A model of `Kernel::Angle_3`.
*/
typedef unspecified_type Angle_3;
/// @}
/// \name Constructions
@ -91,6 +86,8 @@ typedef unspecified_type Construct_cross_product_vector_3;
`%Point_3 operator()(const Point_3& p, const Point_3& q, const Point_3& r)`
that returns the center of the circle passing through the points `p`, `q`, and `r`.
\pre The points `p`, `q`, and `r` are not collinear.
*/
typedef unspecified_type Construct_circumcenter_3;

View File

@ -5,8 +5,8 @@ namespace Weights {
\ingroup PkgWeightsRefConcepts
\cgalConcept
A concept that describes the set of methods required in all classes for computing
2D generalized barycentric weights with respect to polygons.
A concept that describes the set of methods required in all classes used in
the computation of 2D generalized barycentric weights.
\cgalHasModel
- `CGAL::Weights::Wachspress_weights_2`
@ -21,11 +21,14 @@ public:
fills a destination range with 2D generalized barycentric weights
computed at the `query` point with respect to the vertices of the input polygon.
The number of computed weights equals to the number of polygon vertices.
\tparam OutIterator
a model of `OutputIterator` whose value type is `FieldNumberType`
The number of computed weights is equal to the number of polygon vertices.
*/
template<typename OutputIterator>
OutputIterator operator()(
const Point_2& query, OutputIterator w_begin)
template<typename OutIterator>
OutIterator operator()(
const Point_2& query, OutIterator w_begin)
{ }
};

View File

@ -7,14 +7,13 @@ namespace Weights {
\defgroup PkgWeightsRefConcepts Concepts
\ingroup PkgWeightsRef
Concepts, which are used to parameterize/define the functions and classes
from `CGAL::Weights`.
Concepts which are used to parameterize and define the functions and classes of this package.
\defgroup PkgWeightsRefAnalytic Analytic Weights
\ingroup PkgWeightsRef
Models and functions that can be used to compute weights, which have a simple analytic expression.
Models and functions that can be used to compute weights which have a simple analytic expression.
\defgroup PkgWeightsRefUniformWeights Uniform Weight
@ -26,8 +25,6 @@ This weight is always equal to 1.
a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefAnalytic
@ -53,7 +50,6 @@ a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\pre d != 0
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefAnalytic
@ -74,14 +70,13 @@ Alternative formulations are explained in \ref Weights_Implementation.
\cgalFigureEnd
\cgalHeading{Alternative Formulations}
- This weight is a special case of the \ref PkgWeightsRefShepardWeights "Shepard Weight".
This weight is a special case of the \ref PkgWeightsRefShepardWeights "Shepard Weight".
\tparam GeomTraits
a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\pre d != 0
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefAnalytic
@ -94,7 +89,7 @@ This weight is computed as
with notations shown in the figure below and \f$a\f$ any real number
being the power parameter.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are ordered.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are its neighbors.
This weight supports only planar configurations (see more in section about \ref Weights_Implementation_Coplanarity)
while alternative formulations are explained in \ref Weights_Implementation.
@ -119,7 +114,6 @@ a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\pre A1 != 0 && A2 != 0
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefAnalytic
@ -131,7 +125,7 @@ This weight is computed as
\f$w = \frac{C}{A_1 A_2}\f$
with notations shown in the figure below.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are ordered.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are its neighbors.
This weight supports only planar configurations (see more in section about \ref Weights_Implementation_Coplanarity)
while alternative formulations are explained in \ref Weights_Implementation.
@ -149,7 +143,6 @@ a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\pre A1 != 0 && A2 != 0
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefAnalytic
@ -161,7 +154,7 @@ This weight is computed as
\f$w = 2 \frac{\cot\beta + \cot\gamma}{d^2}\f$
with notations shown in the figure below.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are ordered.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are its neighbors.
Alternative formulations are explained in \ref Weights_Implementation.
@ -178,7 +171,6 @@ a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\pre d != 0
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefAnalytic
@ -196,7 +188,7 @@ with notations shown in the figure below and dot products
The \f$\pm\f$ sign is a sign of the weight that depends on the configuration.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are ordered.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are its neighbors.
This weight supports only planar configurations (see more in section about \ref Weights_Implementation_Coplanarity)
while alternative formulations are explained in \ref Weights_Implementation.
@ -214,7 +206,6 @@ a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\pre (d * d1 + D1) != 0 && (d * d2 + D2) != 0
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefAnalytic
@ -231,7 +222,7 @@ with notations shown in the figure below and dot products
\f$D_1 = (p_0 - q) \cdot (p_1 - q)\f$ and
\f$D_2 = (p_1 - q) \cdot (p_2 - q)\f$.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are ordered.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are its neighbors.
Alternative formulations are explained in \ref Weights_Implementation.
@ -248,7 +239,6 @@ a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\pre (d * d1 + D1) != 0 && (d * d2 + D2) != 0 && d != 0
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefAnalytic
@ -260,7 +250,7 @@ This weight is computed as
\f$w = \frac{d_2^2 A_1 - d^2 B + d_1^2 A_2}{A_1 A_2}\f$
with notations shown in the figure below.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are ordered.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are its neighbors.
This weight supports only planar configurations (see more in section about \ref Weights_Implementation_Coplanarity)
while alternative formulations are explained in \ref Weights_Implementation.
@ -278,7 +268,6 @@ a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\pre A1 != 0 && A2 != 0
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefAnalytic
@ -290,7 +279,7 @@ This weight is computed as
\f$w = 2 (\cot\beta + \cot\gamma)\f$
with notations shown in the figure below.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are ordered.
Here, `q` is a query point and the points `p0`, `p1`, and `p2` are its neighbors.
Alternative formulations are explained in \ref Weights_Implementation.
@ -306,8 +295,6 @@ Alternative formulations are explained in \ref Weights_Implementation.
a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefAnalytic
@ -321,7 +308,7 @@ to polygons. These weights are then normalized in order to obtain barycentric co
\defgroup PkgWeightsRefBarycentricWachspressWeights Wachspress Weights
\ingroup PkgWeightsRefBarycentric
Wachspress weights, which can be computed for a query point with respect to the
Wachspress weights which can be computed for a query point with respect to the
vertices of a strictly convex polygon.
\addtogroup PkgWeightsRefBarycentric
@ -330,7 +317,7 @@ vertices of a strictly convex polygon.
\defgroup PkgWeightsRefBarycentricMeanValueWeights Mean Value Weights
\ingroup PkgWeightsRefBarycentric
Mean value weights, which can be computed for a query point with respect to the
Mean value weights which can be computed for a query point with respect to the
vertices of a simple polygon.
\addtogroup PkgWeightsRefBarycentric
@ -339,7 +326,7 @@ vertices of a simple polygon.
\defgroup PkgWeightsRefBarycentricDiscreteHarmonicWeights Discrete Harmonic Weights
\ingroup PkgWeightsRefBarycentric
Discrete Harmonic weights, which can be computed for a query point with respect to the
Discrete Harmonic weights which can be computed for a query point with respect to the
vertices of a strictly convex polygon.
\addtogroup PkgWeightsRefBarycentric
@ -361,8 +348,6 @@ This weight is always equal to 1.
a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefRegions
@ -380,8 +365,6 @@ the triangle `[p, q, r]`.
a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefRegions
@ -400,8 +383,6 @@ the triangle `[p, q, r]`.
a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefRegions
@ -420,8 +401,6 @@ the triangle `[p, q, r]`.
a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\note The type `FT` is a model of `FieldNumberType`.
\sa \ref PkgWeightsRefMixedVoronoiRegionWeights "Mixed Voronoi Region Weight"
\addtogroup PkgWeightsRefRegions
@ -451,8 +430,6 @@ the figure below.
a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\note The type `FT` is a model of `FieldNumberType`.
\sa \ref PkgWeightsRefVoronoiRegionWeights "Voronoi Region Weight"
\addtogroup PkgWeightsRefRegions
@ -461,7 +438,7 @@ a model of `AnalyticWeightTraits_3` for 3D points
\defgroup PkgWeightsRefUtils Utility Functions
\ingroup PkgWeightsRef
Different related utility functions.
Various related utility functions.
\defgroup PkgWeightsRefTangents Tangent
@ -474,8 +451,6 @@ the angle `[p, q, r]` in 2D or 3D.
a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefUtils
@ -489,8 +464,6 @@ the angle `[p, q, r]` in 2D or 3D.
a model of `AnalyticWeightTraits_2` for 2D points;
a model of `AnalyticWeightTraits_3` for 3D points
\note The type `FT` is a model of `FieldNumberType`.
\addtogroup PkgWeightsRefUtils
@ -510,7 +483,7 @@ weights, and weighting regions. All weights are available both in 2D and 3D.}
\cgalPkgSummaryEnd
\cgalPkgShortInfoBegin
\cgalPkgSince{5.3}
\cgalPkgSince{5.4}
\cgalPkgBib{cgal:a-wi}
\cgalPkgLicense{\ref licensesGPL "GPL"}
\cgalPkgDemo{Polyhedron demo, polyhedron_3.zip}

View File

@ -12,17 +12,17 @@ namespace Weights {
Many geometric algorithms rely on the intermediate computation of scalars, so-called *weights*,
which are then used for solving different linear systems or to favor one result over another,
so-called *weighting*. This package provides a simple and unified interface
also known as *weighting*. This package provides a simple and unified interface
to different types of weights.
A typical example of a geometric algorithm that requires weights is a *Laplace smoothing*
A typical example of a geometric algorithm that requires weights is the *Laplace smoothing*
of a triangle mesh:
\f$v_i \leftarrow v_i + h \lambda\Delta v_i\f$,
where \f$v_i\f$ is a position of the mesh vertex \f$i\f$, \f$h\f$ is a sufficiently
small time step, \f$\lambda\f$ is a scalar diffusion coefficient, and \f$\Delta v_i\f$
is a discrete average of the *Laplace-Beltrami operator* at vertex \f$v_i\f$ computed
where \f$v_i\f$ is the position of the mesh vertex \f$i\f$, \f$h\f$ is a sufficiently
small time step, \f$\lambda\f$ is the scalar diffusion coefficient, and \f$\Delta v_i\f$
is the discrete average of the *Laplace-Beltrami operator* at vertex \f$v_i\f$ computed
using the *cotangent weights*:
\f$\Delta v_i = w_i\sum_{v_j \in N_1(v_i)} w_{ij} (v_j - v_i)\f$,
@ -34,12 +34,12 @@ Here, the weights \f$w_{ij}\f$ can be computed using the
\ref PkgWeightsRefCotangentWeights "cotangent weight" and the
local averaging domain can be computed using the
\ref PkgWeightsRefMixedVoronoiRegionWeights "mixed Voronoi region weight". The
algorithm above smooths the mesh geometry that leads to a smoother version of the
algorithm above smooths the mesh geometry, resulting in a higher quality version of the
original mesh. The full example of the discretized *Laplacian* for all vertices
of a triangle mesh can be found \ref Weights_Examples_WeightedLaplacian "here".
There are many other scenarios where the weights from this package are used. In particular,
the following \cgal packages depend on this package:
the following \cgal packages make use of weights described in this package:
\ref PkgBarycentricCoordinates2 "2D Generalized Barycentric Coordinates",
\ref PkgPolygonMeshProcessing "Polygon Mesh Processing",
\ref PkgSurfaceMeshDeformation "Triangulated Surface Mesh Deformation",
@ -57,31 +57,31 @@ three typical groups of weights:
- \ref PkgWeightsRefAnalytic "Analytic Weights"
include all basic weights which can be computed for a query point with respect to its local
neighbors in 2D or 3D, whatever way these neighbors are defined. Usually, the configuration is
neighbors in 2D or 3D, however these neighbors are defined. Usually, the configuration is
a query point and three other points. These weights return one unique value per query point.
- \ref PkgWeightsRefBarycentric "Barycentric Weights"
include all weights which can be computed for a query point with respect to the vertices
of a polygon in XY or any other plane. These weights return \f$n\f$ values per query
of a planar polygon. These weights return \f$n\f$ values per query
point, where \f$n\f$ is the number of polygon vertices. Barycentric weights are also used
for computing \ref PkgBarycentricCoordinates2 "2D barycentric coordinates".
- \ref PkgWeightsRefRegions "Weighting Regions"
include all weights which are used to balance other weights but are rarely used on their own.
Sometimes, such weights are referred as *local averaging regions*. These weights are usually
lengths, areas, and volumes of 2D and 3D objects.
Sometimes, such weights are also referred to as *local averaging regions*. These weights
are usually lengths, areas, and volumes of 2D and 3D objects.
\section Weights_Implementation Implementation
All weights have a simple and unified interface. In particular, all analytic weights take
a query point and three other points in 2D or 3D and return a unique scalar. They all
All weight functions have a simple and unified interface. In particular, all analytic weight functions
usually take a query point and three other points in 2D or 3D and return a unique scalar. They all
have the same signature and are parameterized by a traits class that must be a model of
`AnalyticWeightTraits_2` for 2D computations or `AnalyticWeightTraits_3` for 3D computations.
The barycentric weights are parameterized by a traits class of the concept
`AnalyticWeightTraits_2` and are all models of the concept `BarycentricWeights_2`.
The barycentric weight functions are parameterized by a traits class of the concept
`AnalyticWeightTraits_2` and they are all models of the concept `BarycentricWeights_2`.
They take an input polygon and a query point and compute the weights at this point
with respect to all vertices of the polygon. The weights are then returned in a
container providing the corresponding output iterator. These weights also provide a
with respect to all vertices of the polygon. The computed weights are then returned in a
container providing the corresponding output iterator. These weight functions also provide a
\ref PkgPropertyMap "property map" mechanism for mapping a user type of the polygon
vertex to `CGAL::Point_2`.
@ -89,13 +89,13 @@ All weighting regions have the same signature and are parameterized by a traits
of the concept `AnalyticWeightTraits_2` or `AnalyticWeightTraits_3`. The returned weight
is a unique scalar.
The parameter `traits` with a traits class can be omitted for all functions and classes
if it can be deduced from the input point type.
The `traits` parameter can be omitted for all functions and classes if it can be deduced
from the input point type using `CGAL::Kernel_traits`.
Several weights in this package have different implementations. One reason to have it is
explained in section about \ref Weights_Implementation_Coplanarity. Another reason is that
in different communities the same weights are named and computed differently. If one searches
for these weights, one needs to know all their alternative names, which is tiresome. We provide
the same weights are named and computed differently in different communities. If one searches
for these weights, one needs to know all their alternative names which is problematic. We provide
the most common names and implementations of these weights.
@ -108,7 +108,7 @@ and [\f$q\f$, \f$p_1\f$, \f$p_2\f$]. When working in 3D, these triangles are not
necessarily coplanar, in other words, they do not belong to the same common plane.
Certain weights in this package support only coplanar configurations, while other weights support both.
The weights, which support non-coplanar configurations, provide the corresponding overloads with 3D points,
The weights which support non-coplanar configurations, provide the corresponding overloads with 3D points,
while other weights accept only 2D point types. For example, \ref PkgWeightsRefCotangentWeights "cotangent weights"
support both coplanar and non-coplanar configurations, while \ref PkgWeightsRefDiscreteHarmonicWeights "discrete harmonic weights"
support only coplanar configurations.
@ -116,13 +116,13 @@ support only coplanar configurations.
\subsection Weights_Implementation_Boundaries Boundaries
None of the weights in this package is defined for query points on the boundaries. The boundary cases include:
None of the weights in this package are defined for query points on boundaries. The boundary cases include:
- *edges*, for example [\f$p_0\f$, \f$p_1\f$] or [\f$p_1\f$, \f$p_2\f$] or any polygon edge and
- *corners*, for example \f$p_0\f$, \f$p_1\f$, or \f$p_2\f$ or any polygon corner.
Several weights also require other conditions to be satisifed. You should address the
reference manual for more details.
Several weights also require additional conditions to be satisifed. Consult the reference
manual for more details.
\section Weights_Examples Examples

View File

@ -112,7 +112,7 @@ namespace Weights {
\ingroup PkgWeightsRefAuthalicWeights
\brief computes the authalic weight in 2D at `q` using the points `p0`, `p1`,
and `p2`, which are parameterized by a `Kernel` K.
and `p2` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT authalic_weight(
@ -125,7 +125,7 @@ namespace Weights {
\ingroup PkgWeightsRefAuthalicWeights
\brief computes the authalic weight in 3D at `q` using the points `p0`, `p1`,
and `p2`, which are parameterized by a `Kernel` K.
and `p2` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT authalic_weight(

View File

@ -54,7 +54,7 @@ namespace Weights {
\ingroup PkgWeightsRefBarycentricRegionWeights
\brief computes the area of the barycentric cell in 2D using the points `p`, `q`
and `r`, which are parameterized by a `Kernel` K.
and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT barycentric_area(
@ -66,7 +66,7 @@ namespace Weights {
\ingroup PkgWeightsRefBarycentricRegionWeights
\brief computes the area of the barycentric cell in 3D using the points `p`, `q`
and `r`, which are parameterized by a `Kernel` K.
and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT barycentric_area(

View File

@ -93,7 +93,7 @@ namespace Weights {
\ingroup PkgWeightsRefCotangentWeights
\brief computes the cotangent weight in 2D at `q` using the points `p0`, `p1`,
and `p2`, which are parameterized by a `Kernel` K.
and `p2` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT cotangent_weight(
@ -106,7 +106,7 @@ namespace Weights {
\ingroup PkgWeightsRefCotangentWeights
\brief computes the cotangent weight in 3D at `q` using the points `p0`, `p1`,
and `p2`, which are parameterized by a `Kernel` K.
and `p2` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT cotangent_weight(

View File

@ -63,7 +63,7 @@ namespace Weights {
\ingroup PkgWeightsRefDiscreteHarmonicWeights
\brief computes the discrete harmonic weight in 2D at `q` using the points `p0`, `p1`,
and `p2`, which are parameterized by a `Kernel` K.
and `p2` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT discrete_harmonic_weight(
@ -151,7 +151,7 @@ namespace Weights {
\brief 2D discrete harmonic weights for polygons.
This class implements 2D discrete harmonic weights ( \cite cgal:bc:fhk-gcbcocp-06,
\cite cgal:pp-cdmsc-93, \cite cgal:bc:eddhls-maam-95 ), which can be computed
\cite cgal:pp-cdmsc-93, \cite cgal:bc:eddhls-maam-95 ) which can be computed
at any point inside a strictly convex polygon.
Discrete harmonic weights are well-defined inside a strictly convex polygon
@ -253,7 +253,7 @@ namespace Weights {
This function fills a destination range with 2D discrete harmonic weights
computed at the `query` point with respect to the vertices of the input polygon.
The number of computed weights equals to the number of polygon vertices.
The number of computed weights is equal to the number of polygon vertices.
\tparam OutIterator
a model of `OutputIterator` whose value type is `FT`
@ -375,7 +375,7 @@ namespace Weights {
Internally, the class `Discrete_harmonic_weights_2` is used. If one wants to process
multiple query points, it is better to use that class. When using the free function,
internal memory is allocated for each query point, while when using the class,
it is allocated only once, which is much more efficient. However, for a few query
it is allocated only once which is much more efficient. However, for a few query
points, it is easier to use this function. It can also be used when the processing
time is not a concern.
@ -390,7 +390,7 @@ namespace Weights {
a model of `AnalyticWeightTraits_2`
\param polygon
an instance of `PointRange` with 2D points, which form a strictly convex polygon
an instance of `PointRange` with 2D points which form a strictly convex polygon
\param query
a query point

View File

@ -454,7 +454,7 @@ namespace internal {
// The common plane that is used in this example is projectable to the XY plane. We first
// compute `Mean_value_weights_2` for a 3D polygon in this plane. We then also show how to use
// the projection traits to compute the \ref PkgWeightsRefWachspressWeights "2D Wachspress weight"
// for 3D points, which are not strictly coplanar.
// for 3D points which are not strictly coplanar.
// \cgalExample{Weights/projection_traits.cpp}
@ -470,7 +470,7 @@ namespace internal {
// e.g. 0 - Wachspress (WP) weight.
// const FT wp = FT(0);
// Compute WP weights for q1, which is not on the plane [p0, p1, p2].
// Compute WP weights for q1 which is not on the plane [p0, p1, p2].
// Point_3 q1(3, 1, 2);
// std::cout << "3D wachspress (WP, q1): ";

View File

@ -97,7 +97,7 @@ namespace Weights {
\ingroup PkgWeightsRefMeanValueWeights
\brief computes the mean value weight in 2D at `q` using the points `p0`, `p1`,
and `p2`, which are parameterized by a `Kernel` K.
and `p2` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT mean_value_weight(
@ -196,7 +196,7 @@ namespace Weights {
\brief 2D mean value weights for polygons.
This class implements 2D mean value weights ( \cite cgal:bc:hf-mvcapp-06,
\cite cgal:bc:fhk-gcbcocp-06, \cite cgal:f-mvc-03 ), which can be computed
\cite cgal:bc:fhk-gcbcocp-06, \cite cgal:f-mvc-03 ) which can be computed
at any point inside and outside a simple polygon.
Mean value weights are well-defined inside and outside a simple polygon and are
@ -302,7 +302,7 @@ namespace Weights {
This function fills a destination range with 2D mean value weights computed at
the `query` point with respect to the vertices of the input polygon.
The number of computed weights equals to the number of polygon vertices.
The number of computed weights is equal to the number of polygon vertices.
\tparam OutIterator
a model of `OutputIterator` whose value type is `FT`
@ -445,7 +445,7 @@ namespace Weights {
Internally, the class `Mean_value_weights_2` is used. If one wants to process
multiple query points, it is better to use that class. When using the free function,
internal memory is allocated for each query point, while when using the class,
it is allocated only once, which is much more efficient. However, for a few query
it is allocated only once which is much more efficient. However, for a few query
points, it is easier to use this function. It can also be used when the processing
time is not a concern.
@ -460,7 +460,7 @@ namespace Weights {
a model of `AnalyticWeightTraits_2`
\param polygon
an instance of `PointRange` with 2D points, which form a simple polygon
an instance of `PointRange` with 2D points which form a simple polygon
\param query
a query point

View File

@ -54,7 +54,7 @@ namespace Weights {
\ingroup PkgWeightsRefMixedVoronoiRegionWeights
\brief computes the area of the mixed Voronoi cell in 2D using the points `p`, `q`
and `r`, which are parameterized by a `Kernel` K.
and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT mixed_voronoi_area(
@ -66,7 +66,7 @@ namespace Weights {
\ingroup PkgWeightsRefMixedVoronoiRegionWeights
\brief computes the area of the mixed Voronoi cell in 3D using the points `p`, `q`
and `r`, which are parameterized by a `Kernel` K.
and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT mixed_voronoi_area(

View File

@ -82,7 +82,7 @@ namespace Weights {
\ingroup PkgWeightsRefShepardWeights
\brief computes the Shepard weight in 2D using the points `p` and `q`,
which are parameterized by a `Kernel` K, and the power parameter `a`, which
which are parameterized by a `Kernel` K, and the power parameter `a` which
can be omitted.
*/
template<typename K>
@ -97,7 +97,7 @@ namespace Weights {
\ingroup PkgWeightsRefShepardWeights
\brief computes the Shepard weight in 3D using the points `p` and `q`,
which are parameterized by a `Kernel` K, and the power parameter `a`, which
which are parameterized by a `Kernel` K, and the power parameter `a` which
can be omitted.
*/
template<typename K>
@ -138,7 +138,7 @@ namespace Weights {
\ingroup PkgWeightsRefShepardWeights
\brief computes the Shepard weight in 2D using the points `p` and `q`,
which are parameterized by a `Kernel` K, and the power parameter `a`, which
which are parameterized by a `Kernel` K, and the power parameter `a` which
can be omitted.
*/
template<typename K>
@ -151,7 +151,7 @@ namespace Weights {
\ingroup PkgWeightsRefShepardWeights
\brief computes the Shepard weight in 3D using the points `p` and `q`,
which are parameterized by a `Kernel` K, and the power parameter `a`, which
which are parameterized by a `Kernel` K, and the power parameter `a` which
can be omitted.
*/
template<typename K>

View File

@ -281,7 +281,7 @@ namespace Weights {
\ingroup PkgWeightsRefTangentWeights
\brief computes the tangent weight in 2D at `q` using the points `p0`, `p1`,
and `p2`, which are parameterized by a `Kernel` K.
and `p2` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT tangent_weight(
@ -294,7 +294,7 @@ namespace Weights {
\ingroup PkgWeightsRefTangentWeights
\brief computes the tangent weight in 3D at `q` using the points `p0`, `p1`,
and `p2`, which are parameterized by a `Kernel` K.
and `p2` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT tangent_weight(

View File

@ -79,7 +79,7 @@ namespace Weights {
\ingroup PkgWeightsRefThreePointFamilyWeights
\brief computes the three-point family weight in 2D at `q` using the points `p0`, `p1`,
and `p2`, which are parameterized by a `Kernel` K, and the power parameter `a`, which
and `p2` which are parameterized by a `Kernel` K, and the power parameter `a` which
can be omitted.
*/
template<typename K>

View File

@ -54,7 +54,7 @@ namespace Weights {
\ingroup PkgWeightsRefTriangularRegionWeights
\brief computes the area of the triangular cell in 2D using the points `p`, `q`
and `r`, which are parameterized by a `Kernel` K.
and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT triangular_area(
@ -66,7 +66,7 @@ namespace Weights {
\ingroup PkgWeightsRefTriangularRegionWeights
\brief computes the area of the triangular cell in 3D using the points `p`, `q`
and `r`, which are parameterized by a `Kernel` K.
and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT triangular_area(

View File

@ -53,7 +53,7 @@ namespace Weights {
/*!
\ingroup PkgWeightsRefUniformRegionWeights
\brief this function always returns 1, given three points in 2D, which are
\brief this function always returns 1, given three points in 2D which are
parameterized by a `Kernel` K.
*/
template<typename K>
@ -65,7 +65,7 @@ namespace Weights {
/*!
\ingroup PkgWeightsRefUniformRegionWeights
\brief this function always returns 1, given three points in 3D, which are
\brief this function always returns 1, given three points in 3D which are
parameterized by a `Kernel` K.
*/
template<typename K>

View File

@ -55,7 +55,7 @@ namespace Weights {
/*!
\ingroup PkgWeightsRefUniformWeights
\brief this function always returns 1, given four points in 2D, which are
\brief this function always returns 1, given four points in 2D which are
parameterized by a `Kernel` K.
*/
template<typename K>
@ -68,7 +68,7 @@ namespace Weights {
/*!
\ingroup PkgWeightsRefUniformWeights
\brief this function always returns 1, given four points in 3D, which are
\brief this function always returns 1, given four points in 3D which are
parameterized by a `Kernel` K.
*/
template<typename K>

View File

@ -57,7 +57,7 @@ namespace Weights {
\ingroup PkgWeightsRefTangents
\brief computes the tangent of the angle between the vectors `[q, r]` and `[q, p]`
using the 2D points `p`, `q` and `r`, which are parameterized by a `Kernel` K.
using the 2D points `p`, `q` and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT tangent(
@ -69,7 +69,7 @@ namespace Weights {
\ingroup PkgWeightsRefTangents
\brief computes the tangent of the angle between the vectors `[q, r]` and `[q, p]`
using the 3D points `p`, `q` and `r`, which are parameterized by a `Kernel` K.
using the 3D points `p`, `q` and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT tangent(
@ -109,7 +109,7 @@ namespace Weights {
\ingroup PkgWeightsRefCotangents
\brief computes the cotangent of the angle between the vectors `[q, r]` and `[q, p]`
using the 2D points `p`, `q` and `r`, which are parameterized by a `Kernel` K.
using the 2D points `p`, `q` and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT cotangent(
@ -121,7 +121,7 @@ namespace Weights {
\ingroup PkgWeightsRefCotangents
\brief computes the cotangent of the angle between the vectors `[q, r]` and `[q, p]`
using the 3D points `p`, `q` and `r`, which are parameterized by a `Kernel` K.
using the 3D points `p`, `q` and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT cotangent(

View File

@ -54,7 +54,7 @@ namespace Weights {
\ingroup PkgWeightsRefVoronoiRegionWeights
\brief computes the area of the Voronoi cell in 2D using the points `p`, `q`
and `r`, which are parameterized by a `Kernel` K.
and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT voronoi_area(
@ -66,7 +66,7 @@ namespace Weights {
\ingroup PkgWeightsRefVoronoiRegionWeights
\brief computes the area of the Voronoi cell in 3D using the points `p`, `q`
and `r`, which are parameterized by a `Kernel` K.
and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT voronoi_area(

View File

@ -61,7 +61,7 @@ namespace Weights {
\ingroup PkgWeightsRefWachspressWeights
\brief computes the Wachspress weight in 2D at `q` using the points `p0`, `p1`,
and `p2`, which are parameterized by a `Kernel` K.
and `p2` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT wachspress_weight(
@ -140,7 +140,7 @@ namespace Weights {
\brief 2D Wachspress weights for polygons.
This class implements 2D Wachspress weights ( \cite cgal:bc:fhk-gcbcocp-06,
\cite cgal:bc:mlbd-gbcip-02, \cite cgal:bc:w-rfeb-75 ), which can be computed
\cite cgal:bc:mlbd-gbcip-02, \cite cgal:bc:w-rfeb-75 ) which can be computed
at any point inside a strictly convex polygon.
Wachspress weights are well-defined and non-negative inside a strictly convex polygon.
@ -239,7 +239,7 @@ namespace Weights {
This function fills a destination range with 2D Wachspress weights computed
at the `query` point with respect to the vertices of the input polygon.
The number of computed weights equals to the number of polygon vertices.
The number of computed weights is equal to the number of polygon vertices.
\tparam OutIterator
a model of `OutputIterator` whose value type is `FT`
@ -355,7 +355,7 @@ namespace Weights {
Internally, the class `Wachspress_weights_2` is used. If one wants to process
multiple query points, it is better to use that class. When using the free function,
internal memory is allocated for each query point, while when using the class,
it is allocated only once, which is much more efficient. However, for a few query
it is allocated only once which is much more efficient. However, for a few query
points, it is easier to use this function. It can also be used when the processing
time is not a concern.
@ -370,7 +370,7 @@ namespace Weights {
a model of `AnalyticWeightTraits_2`
\param polygon
an instance of `PointRange` with 2D points, which form a strictly convex polygon
an instance of `PointRange` with 2D points which form a strictly convex polygon
\param query
a query point