diff --git a/Convex_hull_3/doc/Convex_hull_3/CGAL/Convex_hull_traits_3.h b/Convex_hull_3/doc/Convex_hull_3/CGAL/Convex_hull_traits_3.h index baa09d09556..c3b08a99836 100644 --- a/Convex_hull_3/doc/Convex_hull_3/CGAL/Convex_hull_traits_3.h +++ b/Convex_hull_3/doc/Convex_hull_3/CGAL/Convex_hull_traits_3.h @@ -8,8 +8,8 @@ The class `Convex_hull_traits_3` serves as a traits class for the function function when `R` is a kernel with exact predicates but inexact constructions (note that the type `Plane_3` is a triple of `Point_3` and not `R::Plane_3`). -\cgalModels ::ConvexHullTraits_3 -\cgalModels ::IsStronglyConvexTraits_3 +\cgalModels `ConvexHullTraits_3` +\cgalModels `IsStronglyConvexTraits_3` */ template< typename R > diff --git a/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3.h b/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3.h index 9b01bd6b2ca..9b58e482f72 100644 --- a/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3.h +++ b/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3.h @@ -12,42 +12,27 @@ the convex hull is stored in `P`. \pre There are at least four points in the range [`first`, `last`) not all of which are collinear. -The function `::convex_hull_3()` computes the convex hull of a given set of -three-dimensional points -Two versions of this function -are available. The first can be used when it is known that the result -will be a polyhedron and the second when a degenerate hull -may also be possible. - -\cgalRequires `InputIterator::value_type` is equivalent to `Traits::Point_3`. -\cgalRequires `Traits` is a model of the concept `ConvexHullTraits_3`. +\tparam InputIterator must be an input iterator with a value type equivalent to `Traits::Point_3`. +\tparam Polyhedron_3 must be a model of `ConvexHullPolyhedron_3`. +\tparam Traits must be a model of the concept `ConvexHullTraits_3`. For the purposes of checking the postcondition that the convex hull is valid, `Traits` should also be a model of the concept `IsStronglyConvexTraits_3`. -\cgalRequires `Polyhedron_3` is a model of `ConvexHullPolyhedron_3`. -If the kernel `R` of the points determined by `InputIterator::value_type` + +If the kernel `R` of the points determined by the value type of `InputIterator` is a kernel with exact predicates but inexact constructions (in practice we check `R::Has_filtered_predicates_tag` is `Tag_true` and `R::FT` is a floating point type), then the default traits class of `::convex_hull_3()` is `Convex_hull_traits_3`, and `R` otherwise. -\sa `CGAL::convex_hull_incremental_3()` +\sa `convex_hull_incremental_3()` ### Implementation ### The algorithm implemented by these functions is the quickhull algorithm of Barnard et al. \cite bdh-qach-96. -### Example ### - -The following program computes the convex hull of a set of 250 random -points chosen from a sphere of radius 100. It then determines if the resulting -hull is a segment or a polyhedron. Notice that the traits class is not -necessary in the call to `::convex_hull_3()` but is used in the definition -of `Polyhedron_3`. - -\cgalExample{Convex_hull_3/quickhull_3.cpp} */ @@ -64,18 +49,17 @@ a triangle, or a polyhedron, is stored in `ch_object`. \attention This function does not compute the plane equations of the faces of `P` in case the result is a polyhedron. -\cgalRequires `InputIterator::value_type` is equivalent to `Traits::Point_3`. -\cgalRequires `Traits` is a model of the concept `ConvexHullTraits_3`. +\tparam InputIterator must be an input iterator with a value type equivalent to `Traits::Point_3`. +\tparam Traits must be model of the concept `ConvexHullTraits_3`. For the purposes of checking the postcondition that the convex hull is valid, `Traits` should also be a model of the concept -`IsStronglyConvexTraits_3`. -\cgalRequires `Traits` defines a type `Polyhedron_3` that is a model of +`IsStronglyConvexTraits_3`. Furthermore, `Traits` must define a type `Polyhedron_3` that is a model of `ConvexHullPolyhedron_3`. -If the kernel `R` of the points determined by `InputIterator::value_type` +If the kernel `R` of the points determined by the value type of `InputIterator` is a kernel with exact predicates but inexact constructions (in practice we check `R::Has_filtered_predicates_tag` is `Tag_true` and `R::FT` is a floating point type), -then the default traits class of `::convex_hull_3()` is `Convex_hull_traits_3`, and `R` otherwise. +then the default traits class of `convex_hull_3()` is `Convex_hull_traits_3`, and `R` otherwise. */ diff --git a/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3_to_polyhedron_3.h b/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3_to_polyhedron_3.h index bf58f37d462..b38685fb530 100644 --- a/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3_to_polyhedron_3.h +++ b/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3_to_polyhedron_3.h @@ -3,8 +3,7 @@ namespace CGAL { /*! \ingroup PkgConvexHull3Functions -The function `convex_hull_3_to_polyhedron_3` fills a polyhedron with the convex hull -of a set of 3D points contained in a 3D triangulation of \cgal. +fills a polyhedron with the convex hull of a set of 3D points contained in a 3D triangulation of \cgal. The polyhedron `P` is cleared and the convex hull of the set of 3D points is stored in `P`. @@ -12,10 +11,10 @@ The polyhedron `P` is cleared and the convex hull of the set of 3D points is sto \pre `T.dimension()`==3. -\cgalRequires `Triangulation` is a \cgal 3D triangulation. -\cgalRequires `Polyhedron` is an instantiation of `CGAL::Polyhedron_3`. +\tparam Triangulation is a \cgal 3D triangulation. +\tparam Polyhedron is an instantiation of `CGAL::Polyhedron_3`. -\sa `CGAL::convex_hull_3` +\sa `convex_hull_3` */ template void convex_hull_3_to_polyhedron_3(const Triangulation& T,Polyhedron& P); diff --git a/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_incremental_3.h b/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_incremental_3.h index 399d5280ca8..f627a3626c7 100644 --- a/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_incremental_3.h +++ b/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_incremental_3.h @@ -12,20 +12,22 @@ used to determine the correctness of the resulting polyhedron. \attention This function is provided for completeness and educational purposes. When an efficient incremental implementation is needed, -using `CGAL::Delaunay_triangulation_3` together with -`CGAL::convex_hull_3_to_polyhedron_3` is highly recommended. +using `Delaunay_triangulation_3` together with +`convex_hull_3_to_polyhedron_3()` is highly recommended. -\cgalRequires `Polyhedron` must provide a type `Polyhedron::Traits` +\tparam InputIterator must be an input iterator where the value type must be +`Polyhedron::Traits::Point`. + +\tparam Polyhedron must provide a type `Polyhedron::Traits` that defines the following types - `Polyhedron::Traits::R`, which is a model of the representation class `R` required by -`CGAL::Convex_hull_d_traits_3` +`Convex_hull_d_traits_3` - `Polyhedron::Traits::Point` -\cgalRequires `InputIterator::value_type` must be the same as -`Polyhedron::Traits::Point`. -\sa `CGAL::convex_hull_3()` +\sa `convex_hull_3()` +\sa `Convex_hull_d` ### Implementation ### @@ -34,17 +36,6 @@ algorithm \cite cms-frric-93 with `d` fixed to 3. The algorithm requires \f$ O(n^2)\f$ time in the worst case and \f$ O(n \log n)\f$ expected time. -\sa `CGAL::Convex_hull_d` - -### Example ### - -The following example computes the convex hull of a set of 250 random -points chosen uniformly in a sphere of radius 100. - -\cgalExample{Convex_hull_3/incremental_hull_3.cpp} - - - */ template void diff --git a/Convex_hull_3/doc/Convex_hull_3/CGAL/convexity_check_3.h b/Convex_hull_3/doc/Convex_hull_3/CGAL/convexity_check_3.h index e3b3f23e5d0..13278422041 100644 --- a/Convex_hull_3/doc/Convex_hull_3/CGAL/convexity_check_3.h +++ b/Convex_hull_3/doc/Convex_hull_3/CGAL/convexity_check_3.h @@ -3,9 +3,9 @@ namespace CGAL { /*! \ingroup PkgConvexityChecking -The function `is_strongly_convex_3` determines if the vertices of a given polyhedron +determines if the vertices of a given polyhedron represents a strongly convex set of points or not. A set of points is said -to be strongly convex if it consists of only extreme points (i.e., +to be strongly convex if it consists of only extreme points (i.e., vertices of the convex hull). The default traits class is the kernel in which the type diff --git a/Convex_hull_3/doc/Convex_hull_3/PackageDescription.txt b/Convex_hull_3/doc/Convex_hull_3/PackageDescription.txt index d968f2ca31a..87e14fa1fa8 100644 --- a/Convex_hull_3/doc/Convex_hull_3/PackageDescription.txt +++ b/Convex_hull_3/doc/Convex_hull_3/PackageDescription.txt @@ -6,8 +6,15 @@ /// \defgroup PkgConvexHull3Traits Traits Classes /// \ingroup PkgConvexHull3 -/// \defgroup PkgConvexHull3Functions Convex Hull Functions -/// \ingroup PkgConvexHull3 +/*! \defgroup PkgConvexHull3Functions Convex Hull Functions + \ingroup PkgConvexHull3 +The function `convex_hull_3()` computes the convex hull of a given set of +three-dimensional points. + +Two versions of this function are available. The first can be used when it +is known that the result will be a polyhedron and the second when a +degenerate hull may also be possible. +*/ /// \defgroup PkgConvexityChecking Convexity Checking /// \ingroup PkgConvexHull3