mirror of https://github.com/CGAL/cgal
Reorder sections in the manual, and add Surface_mesh in the exaxmple
This commit is contained in:
parent
cd7e65e708
commit
b6ff5e6932
|
|
@ -55,15 +55,31 @@ the traits `Convex_hull_traits_3<R>` should be used
|
||||||
(`R` being the input kernel). Note that the default traits class takes this into
|
(`R` being the input kernel). Note that the default traits class takes this into
|
||||||
account.
|
account.
|
||||||
|
|
||||||
\subsection Convex_hull_3ConvexityChecking Convexity Checking
|
\subsubsection Convex_hull_3Example Example
|
||||||
|
|
||||||
|
The following program reads points from an input file and computes
|
||||||
|
their convex hull. We assume that the points are
|
||||||
|
not all identical and not all collinear, thus we directly use a polyhedron
|
||||||
|
as output. In the example you see that the convex hull function can
|
||||||
|
write in any model of the concept `MutableFaceListGraph`.
|
||||||
|
|
||||||
|
|
||||||
|
\cgalExample{Convex_hull_3/quickhull_3.cpp}
|
||||||
|
|
||||||
|
|
||||||
|
\subsubsection Convex_hull_3Example Example for lower dimensional results
|
||||||
|
|
||||||
|
The following program reads points from an input file and computes
|
||||||
|
their convex hull. Depending on the dimension of the result, we will
|
||||||
|
get a point, a segment, a triangle, or a polyhedral surface.
|
||||||
|
Note that the latter may also be planar polygon with a border.
|
||||||
|
|
||||||
|
\cgalExample{Convex_hull_3/quickhull_any_dim_3.cpp}
|
||||||
|
|
||||||
|
|
||||||
The function `is_strongly_convex_3()`
|
|
||||||
implements the algorithm of Mehlhorn <I>et al.</I> \cgalCite{mnssssu-cgpvg-96}
|
|
||||||
to determine if the vertices of a given polytope constitute a strongly convex
|
|
||||||
point set or not. This function is used in postcondition testing for
|
|
||||||
`convex_hull_3()`.
|
|
||||||
|
|
||||||
\subsection Convex_hull_3HalfspaceIntersection Halfspace Intersection
|
\subsection Convex_hull_3HalfspaceIntersection Halfspace Intersection
|
||||||
|
|
||||||
The functions `halfspace_intersection_3()` and
|
The functions `halfspace_intersection_3()` and
|
||||||
`halfspace_intersection_with_constructions_3()`
|
`halfspace_intersection_with_constructions_3()`
|
||||||
uses the convex hull algorithm and the duality to compute the intersection
|
uses the convex hull algorithm and the duality to compute the intersection
|
||||||
|
|
@ -75,21 +91,22 @@ In order to compute the intersection an interior point is needed. It can be
|
||||||
either given by the user or computed using linear programming. Notice that the
|
either given by the user or computed using linear programming. Notice that the
|
||||||
second approach is slower due to the resolution of a linear program.
|
second approach is slower due to the resolution of a linear program.
|
||||||
|
|
||||||
|
\subsubsection Convex_hull_3HalfspaceInntersectionExample Example
|
||||||
|
|
||||||
The following program computes the intersection of halfspaces defined by
|
The following program computes the intersection of halfspaces defined by
|
||||||
tangent planes to a sphere:
|
tangent planes to a sphere:
|
||||||
|
|
||||||
\cgalExample{Convex_hull_3/halfspace_intersection_3.cpp}
|
\cgalExample{Convex_hull_3/halfspace_intersection_3.cpp}
|
||||||
|
|
||||||
\subsection Convex_hull_3Example Example
|
|
||||||
|
|
||||||
The following program computes the convex hull of a set of 250 random
|
\subsection Convex_hull_3ConvexityChecking Convexity Checking
|
||||||
points chosen from a sphere of radius 100. We assume that the points are
|
|
||||||
not all identical and not all collinear, thus we directly use a polyhedron
|
The function `is_strongly_convex_3()`
|
||||||
as output. Note the usage of the functor `Plane_from_facet` together with
|
implements the algorithm of Mehlhorn <I>et al.</I> \cgalCite{mnssssu-cgpvg-96}
|
||||||
`std::transform()` to compute the equations of the plane of each facet
|
to determine if the vertices of a given polytope constitute a strongly convex
|
||||||
of the convex hull.
|
point set or not. This function is used in postcondition testing for
|
||||||
|
`convex_hull_3()`.
|
||||||
|
|
||||||
\cgalExample{Convex_hull_3/quickhull_3.cpp}
|
|
||||||
|
|
||||||
\section Convex_hull_3Dynamic Dynamic Convex Hull Construction
|
\section Convex_hull_3Dynamic Dynamic Convex Hull Construction
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||||
#include <CGAL/Polyhedron_3.h>
|
#include <CGAL/Polyhedron_3.h>
|
||||||
|
#include <CGAL/Surface_mesh.h>
|
||||||
#include <CGAL/convex_hull_3.h>
|
#include <CGAL/convex_hull_3.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
@ -7,6 +8,7 @@
|
||||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Polyhedron_3<K> Polyhedron_3;
|
typedef CGAL::Polyhedron_3<K> Polyhedron_3;
|
||||||
typedef K::Point_3 Point_3;
|
typedef K::Point_3 Point_3;
|
||||||
|
typedef CGAL::Surface_mesh<Point_3> Surface_mesh;
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
|
|
@ -26,5 +28,13 @@ int main(int argc, char* argv[])
|
||||||
|
|
||||||
std::cout << "The convex hull contains " << poly.size_of_vertices() << " vertices" << std::endl;
|
std::cout << "The convex hull contains " << poly.size_of_vertices() << " vertices" << std::endl;
|
||||||
|
|
||||||
|
Surface_mesh sm;
|
||||||
|
|
||||||
|
CGAL::convex_hull_3(points.begin(), points.end(), sm);
|
||||||
|
|
||||||
|
std::cout << "The convex hull contains " << num_vertices(sm) << " vertices" << std::endl;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue