fix up grouping in pca

This commit is contained in:
Philipp Möller 2012-09-12 12:47:46 +00:00
parent b26220959d
commit 0c30375322
5 changed files with 65 additions and 170 deletions

View File

@ -1,24 +1,26 @@
namespace CGAL {
/*!
\defgroup PkgPrincipalComponentAnalysisDBary barycenter
\ingroup PkgPrincipalComponentAnalysisD
\brief computes the barycenter of a non-empty set of 2D weighted points.
The function `barycenter` computes the barycenter (weighted center of
mass) of a set of 2D or 3D weighted points. The weight associated to
each point is specified using a `std::pair` storing the point and its
weight.
The user can also optionally pass an explicit kernel, in case the
default, based on `Kernel_traits` is not sufficient. The dimension is
also deduced automatically.
There is a set of overloaded `barycenter` functions for 2D and 3D
weighted points. The user can also optionally pass an explicit kernel,
in case the default, based on `Kernel_traits` is not sufficient. The
dimension is also deduced automatically.
\sa `CGAL::centroid`
*/
/// @{
`K` is
`Kernel_traits<std::iterator_traits<InputIterator>::value_type::first_type>::Kernel`.
/*!
computes the barycenter of a non-empty set of 2D weighted points.
`K` is `Kernel_traits<std::iterator_traits<InputIterator>::value_type::first_type>::Kernel`.
The value type must be `std::pair<K::Point_2, K::FT>`.
\pre first != beyond, and the sum of the weights is non-zero.
@ -28,20 +30,7 @@ K::Point_2
barycenter(InputIterator first, InputIterator beyond);
/*!
\ingroup PkgPrincipalComponentAnalysisD
\brief computes the barycenter of a non-empty set of 2D weighted points.
The function `barycenter` computes the barycenter (weighted center of
mass) of a set of 2D or 3D weighted points. The weight associated to
each point is specified using a `std::pair` storing the point and its
weight.
The user can also optionally pass an explicit kernel, in case the
default, based on `Kernel_traits` is not sufficient. The dimension is
also deduced automatically.
\sa `CGAL::centroid`
computes the barycenter of a non-empty set of 2D weighted points.
The value type must be `std::pair<K::Point_2, K::FT>`.
@ -52,24 +41,9 @@ K::Point_2
barycenter(InputIterator first, InputIterator beyond, const K & k);
/*!
\ingroup PkgPrincipalComponentAnalysisD
computes the barycenter of a non-empty set of 3D weighted points.
\brief computes the barycenter of a non-empty set of 3D weighted points.
The function `barycenter` computes the barycenter (weighted center of
mass) of a set of 2D or 3D weighted points. The weight associated to
each point is specified using a `std::pair` storing the point and its
weight.
The user can also optionally pass an explicit kernel, in case the
default, based on `Kernel_traits` is not sufficient. The dimension is
also deduced automatically.
\sa `CGAL::centroid`
`K` is
`Kernel_traits<std::iterator_traits<InputIterator>::value_type::first_type>::Kernel`.
`K` is `Kernel_traits<std::iterator_traits<InputIterator>::value_type::first_type>::Kernel`.
The value type must be `std::pair<K::Point_3, K::FT>`.
\pre first != beyond, and the sum of the weights is non-zero.
@ -79,20 +53,7 @@ K::Point_3
barycenter(InputIterator first, InputIterator beyond);
/*!
\ingroup PkgPrincipalComponentAnalysisD
\brief computes the barycenter of a non-empty set of 3D weighted points.
The function `barycenter` computes the barycenter (weighted center of
mass) of a set of 2D or 3D weighted points. The weight associated to
each point is specified using a `std::pair` storing the point and its
weight.
The user can also optionally pass an explicit kernel, in case the
default, based on `Kernel_traits` is not sufficient. The dimension is
also deduced automatically.
\sa `CGAL::centroid`
computes the barycenter of a non-empty set of 3D weighted points.
The value type must be `std::pair<K::Point_3, K::FT>`.
@ -102,5 +63,6 @@ template < typename InputIterator, typename K >
K::Point_3
barycenter(InputIterator first, InputIterator beyond, const K & k);
/// @}
} /* namespace CGAL */

View File

@ -1,18 +1,23 @@
namespace CGAL {
/*!
\defgroup PkgPrincipalComponentAnalysisDbb bounding_box
\ingroup PkgPrincipalComponentAnalysisD
computes the bounding box of a non-empty set of 2D points.
The function `bounding_box` computes the axis-aligned bounding box of
a set of 2D or 3D points. The bounding box is returned either as an
iso rectangle in 2D or as an iso cuboid in 3D, the type being deduced
automatically from the value type of the iterator range.
The user can also optionally pass an explicit kernel, in case the
default, based on `Kernel_traits` is not sufficient. The dimension is
also deduced automatically.
There is a set of overloaded bounding_box functions for 2D and 3D
points. The user can also optionally pass an explicit kernel, in case
the default, based on `Kernel_traits` is not sufficient. The dimension
is also deduced automatically.
*/
/// @{
/*!
computes the bounding box of a non-empty set of 2D points.
`K` is `Kernel_traits<std::iterator_traits<InputIterator>::value_type>::Kernel`.
The value type must be `K::Point_2`.
@ -24,20 +29,8 @@ K::Iso_rectangle_2
bounding_box(InputIterator first, InputIterator beyond);
/*!
\ingroup PkgPrincipalComponentAnalysisD
computes the bounding box of a non-empty set of 2D points.
The function `bounding_box` computes the axis-aligned bounding box of
a set of 2D or 3D points. The bounding box is returned either as an
iso rectangle in 2D or as an iso cuboid in 3D, the type being deduced
automatically from the value type of the iterator range.
The user can also optionally pass an explicit kernel, in case the
default, based on `Kernel_traits` is not sufficient. The dimension is
also deduced automatically.
The value type must be `K::Point_2`.
\pre first != beyond.
*/
@ -46,22 +39,11 @@ K::Iso_rectangle_2
bounding_box(InputIterator first, InputIterator beyond, const K & k);
/*!
\ingroup PkgPrincipalComponentAnalysisD
\brief computes the bounding box of a non-empty set of 3D points.
The function `bounding_box` computes the axis-aligned bounding box of
a set of 2D or 3D points. The bounding box is returned either as an
iso rectangle in 2D or as an iso cuboid in 3D, the type being deduced
automatically from the value type of the iterator range.
There is a set of overloaded `bounding_box` functions for 2D and 3D
points. The user can also optionally pass an explicit kernel, in case
the default, based on `Kernel_traits` is not sufficient. The dimension
is also deduced automatically.
computes the bounding box of a non-empty set of 3D points.
`K` is `Kernel_traits<std::iterator_traits<InputIterator>::value_type>::Kernel`.
The value type must be `K::Point_3`.
\pre first != beyond.
*/
template < typename InputIterator >
@ -69,20 +51,7 @@ K::Iso_cuboid_3
bounding_box(InputIterator first, InputIterator beyond);
/*!
\ingroup PkgPrincipalComponentAnalysisD
\brief computes the bounding box of a non-empty set of 3D points.
The function `bounding_box` computes the axis-aligned bounding box of
a set of 2D or 3D points. The bounding box is returned either as an
iso rectangle in 2D or as an iso cuboid in 3D, the type being deduced
automatically from the value type of the iterator range.
There is a set of overloaded `bounding_box` functions for 2D and 3D
points. The user can also optionally pass an explicit kernel, in case
the default, based on `Kernel_traits` is not sufficient. The dimension
is also deduced automatically.
computes the bounding box of a non-empty set of 3D points.
The value type must be `K::Point_3`.
\pre first != beyond.
*/
@ -90,5 +59,7 @@ template < typename InputIterator, typename K >
K::Iso_cuboid_3
bounding_box(InputIterator first, InputIterator beyond, const K & k);
/// @}
} /* namespace CGAL */

View File

@ -1,13 +1,9 @@
namespace CGAL {
/*!
\defgroup PkgPrincipalComponentAnalysisDCentroid centroid
\ingroup PkgPrincipalComponentAnalysisD
\brief computes the centroid of a non-empty set of 2D objects. The tag
is used to specify the dimension to be considered from the
objects. `K` is
`Kernel_traits<std::iterator_traits<InputIterator>::value_type>::Kernel`.
The function `centroid` computes the (uniform) center of mass of a set
of 2D or 3D bounded objects. In 2D these objects include points,
segments, triangles, iso rectangles, circles and disks. In 3D these
@ -25,7 +21,15 @@ computes the centroid of the tetrahedron edges (3D segments) and
specifying a dimension 2 computes the centroid of the tetrahedron
facets (3D triangles).
\sa `CGAL::barycenter`
\sa \ref barycenter
*/
/// @{
/*!
computes the centroid of a non-empty set of 2D objects. The tag
is used to specify the dimension to be considered from the
objects. `K` is
`Kernel_traits<std::iterator_traits<InputIterator>::value_type>::Kernel`.
The value type must be either `K::Point_2`, `K::Segment_2`,
`K::Triangle_2`, `K::Rectangle_2` or `K::Circle_2`. To fit a set of
@ -40,32 +44,11 @@ K::Point_2
centroid(InputIterator first, InputIterator beyond, const Tag& t);
/*!
\ingroup PkgPrincipalComponentAnalysisD
\brief computes the centroid of a non-empty set of 2D objects. The tag
computes the centroid of a non-empty set of 2D objects. The tag
is used to specify the dimension to be considered from the
objects. `K` is
`Kernel_traits<std::iterator_traits<InputIterator>::value_type>::Kernel`.
The function `centroid` computes the (uniform) center of mass of a set
of 2D or 3D bounded objects. In 2D these objects include points,
segments, triangles, iso rectangles, circles and disks. In 3D these
objects include points, segments, triangles, iso cuboids, spheres,
balls and tetrahedra.
The user can also optionally pass an explicit kernel, in case the
default based on `Kernel_traits` is not sufficient. The default
dimension tag is deduced automatically, although the user can pass a
`tag` specifying the dimension of the objects to be considered for the
centroid computation. For example, the default dimension of a
tetrahedron is 3, but specifying a dimension 0 computes the centroid
of the tetrahedron vertices (3D points), specifying a dimension 1
computes the centroid of the tetrahedron edges (3D segments) and
specifying a dimension 2 computes the centroid of the tetrahedron
facets (3D triangles).
\sa `CGAL::barycenter`
The value type must be either `K::Point_2`, `K::Segment_2`,
`K::Triangle_2`, `K::Rectangle_2` or `K::Circle_2`. To fit a set of
disks the user must call the function with value type `K::Circle_2`
@ -79,32 +62,12 @@ K::Point_2
centroid(InputIterator first, InputIterator beyond, const K & k, const Tag& t);
/*!
\ingroup PkgPrincipalComponentAnalysisD
\brief computes the centroid of a non-empty set of 3D objects. The tag
computes the centroid of a non-empty set of 3D objects. The tag
is used to specify the dimension to be considered from the
objects. `K` is
`Kernel_traits<std::iterator_traits<InputIterator>::value_type>::Kernel`.
The function `centroid` computes the (uniform) center of mass of a set
of 2D or 3D bounded objects. In 2D these objects include points,
segments, triangles, iso rectangles, circles and disks. In 3D these
objects include points, segments, triangles, iso cuboids, spheres,
balls and tetrahedra.
The user can also optionally pass an explicit kernel, in case the
default based on `Kernel_traits` is not sufficient. The default
dimension tag is deduced automatically, although the user can pass a
`tag` specifying the dimension of the objects to be considered for the
centroid computation. For example, the default dimension of a
tetrahedron is 3, but specifying a dimension 0 computes the centroid
of the tetrahedron vertices (3D points), specifying a dimension 1
computes the centroid of the tetrahedron edges (3D segments) and
specifying a dimension 2 computes the centroid of the tetrahedron
facets (3D triangles).
\sa `CGAL::barycenter`
The value type must be either `K::Point_3`, `K::Segment_3`,
`Triangle_3`, `Cuboid_3`, `Sphere_3` or `Tetrahedron_3`. To fit a set
of balls the user must call the function with value type `K::Sphere_3`
@ -118,19 +81,11 @@ K::Point_3
centroid(InputIterator first, InputIterator beyond, const Tag& t);
/*!
\ingroup PkgPrincipalComponentAnalysisD
\brief computes the centroid of a non-empty set of 3D objects. The tag
computes the centroid of a non-empty set of 3D objects. The tag
is used to specify the dimension to be considered from the
objects. `K` is
`Kernel_traits<std::iterator_traits<InputIterator>::value_type>::Kernel`.
The function `centroid` computes the (uniform) center of mass of a set of 2D or 3D bounded objects. In 2D these objects include points, segments, triangles, iso rectangles, circles and disks. In 3D these objects include points, segments, triangles, iso cuboids, spheres, balls and tetrahedra.
The user can also optionally pass an explicit kernel, in case the default based on `Kernel_traits` is not sufficient. The default dimension tag is deduced automatically, although the user can pass a `tag` specifying the dimension of the objects to be considered for the centroid computation. For example, the default dimension of a tetrahedron is 3, but specifying a dimension 0 computes the centroid of the tetrahedron vertices (3D points), specifying a dimension 1 computes the centroid of the tetrahedron edges (3D segments) and specifying a dimension 2 computes the centroid of the tetrahedron facets (3D triangles).
\sa `CGAL::barycenter`
The value type must be either `K::Point_3`, `K::Segment_3`,
`Triangle_3`, `Cuboid_3`, `Sphere_3` or `Tetrahedron_3`. To fit a set
of balls the user must call the function with value type `K::Sphere_3`
@ -143,5 +98,7 @@ template < typename InputIterator, typename K, typename Tag >
K::Point_3
centroid(InputIterator first, InputIterator beyond, const K & k, const Tag& t);
/// @}
} /* namespace CGAL */

View File

@ -1,18 +1,13 @@
namespace CGAL {
/*!
\defgroup PkgPrincipalComponentAnalysisDLLSF3 linear_least_square_fitting_3
\ingroup PkgPrincipalComponentAnalysisD
\brief computes the best fitting 3D line of a 3D object set in the
range [`first`,`beyond`). The value returned is a fitting quality
between \f$ 0\f$ and \f$ 1\f$, where \f$ 0\f$ means that the variance
is the same along any line contained within the best fitting plane,
and \f$ 1\f$ means that the variance is null orthogonally to the best
fitting line (hence the fit is perfect).
Function `linear_least_squares_fitting_3` computes the best fitting 3D
line or plane (in the least squares sense) of a set of 3D objects such
as points, segments, triangles, spheres, balls, cuboids or tetrahedra.
The function `linear_least_squares_fitting_3` computes the best
fitting 3D line or plane (in the least squares sense) of a set of 3D
objects such as points, segments, triangles, spheres, balls, cuboids
or tetrahedra.
The best fitting linear sub-space (here line or plane) minimizes the
sum of squared distances from all points comprising these objects to
@ -41,6 +36,17 @@ smallest eigenvalue is different from the two others, otherwise all
planes going through the best fitting line share the same fitting
property.
*/
/// @{
/*!
\brief computes the best fitting 3D line of a 3D object set in the
range [`first`,`beyond`). The value returned is a fitting quality
between \f$ 0\f$ and \f$ 1\f$, where \f$ 0\f$ means that the variance
is the same along any line contained within the best fitting plane,
and \f$ 1\f$ means that the variance is null orthogonally to the best
fitting line (hence the fit is perfect).
The tag `tag` identifies the dimension to be considered from the
objects. For point sets it should be 0. For segment sets it could be 1
or 0 according to whether one wants to fit the entire segments or just
@ -83,8 +89,6 @@ const Tag& tag,
const K& k);
/*!
\ingroup PkgPrincipalComponentAnalysisD
\brief computes the best fitting 3D plane of a 3D object set in the
range [`first`,`beyond`). The value returned is a fitting quality
between \f$ 0\f$ and \f$ 1\f$, where \f$ 0\f$ means that the variance
@ -120,5 +124,7 @@ typename K::Point_3& centroid,
const Tag& tag,
const K& k);
/// @}
} /* namespace CGAL */

View File

@ -1,6 +1,5 @@
/// \defgroup PkgPrincipalComponentAnalysisD Principal Component Analysis
/// \defgroup PkgPrincipalComponentAnalysisDConcepts Concepts
/// \ingroup PkgPrincipalComponentAnalysisD
/*!
\addtogroup PkgPrincipalComponentAnalysisD
\todo check generated documentation
@ -10,7 +9,7 @@
\PkgDesc{This package provides functions to compute global information about the shape of a set of 2D or 3D objects. It provides the computation of axis-aligned bounding boxes for point sets, and barycenters of weighted point sets. In addition, it provides computation of centroids (center of mass) and linear least squares fitting for point sets as well as for sets of other bounded objects. More specifically, it is possible to fit 2D lines to 2D segments, circles, disks, iso rectangles and triangles, as well as to fit 3D lines or 3D planes to 3D segments, triangles, iso cuboids, tetrahedra, spheres and balls. The common interface to these functions takes an iterator range of objects.}
\PkgSince{3.2}
\cgalbib{cgal:ap-pcad}
\license{ \ref licensesGPL "GPL" }
\license{\ref licensesGPL "GPL"}
\PkgDescriptionEnd
This \cgal component provides functions to compute global information