Do a global pass over Doxygen warnings/errors.

This commit is contained in:
Philipp Möller 2012-10-02 15:12:54 +00:00
parent 8e17db354a
commit 272a52ee44
98 changed files with 500 additions and 750 deletions

15
.gitattributes vendored
View File

@ -1372,6 +1372,7 @@ BGL/doc/BGL/CGAL/boost/graph/halfedge_graph_traits_Polyhedron_3.h -text
BGL/doc/BGL/CGAL/boost/graph/properties.h -text
BGL/doc/BGL/Concepts/HalfedgeGraph.h -text
BGL/doc/BGL/PackageDescription.txt -text
BGL/doc/BGL/examples.txt -text
BGL/doc/BGL/fig/emst-detail.png -text svneol=unset#image/png
BGL/doc/BGL/fig/emst.jpg -text svneol=unset#image/jpeg
BGL/doc/BGL/fig/ex_bgl.gif -text svneol=unset#image/gif
@ -1686,6 +1687,7 @@ Bounding_volumes/doc/Bounding_volumes/Concepts/MinSphereAnnulusDTraits.h -text
Bounding_volumes/doc/Bounding_volumes/Concepts/MinSphereOfSpheresTraits.h -text
Bounding_volumes/doc/Bounding_volumes/Concepts/RectangularPCenterTraits_2.h -text
Bounding_volumes/doc/Bounding_volumes/PackageDescription.txt -text
Bounding_volumes/doc/Bounding_volumes/examples.txt -text
Bounding_volumes/doc/Bounding_volumes/fig/annulus.gif -text svneol=unset#image/gif
Bounding_volumes/doc/Bounding_volumes/fig/annulus.pdf -text svneol=unset#application/pdf
Bounding_volumes/doc/Bounding_volumes/fig/ball.gif -text svneol=unset#image/gif
@ -1861,6 +1863,7 @@ Circular_kernel_2/doc/Circular_kernel_2/Concepts/CircularKernel--MakeXYMonotone_
Circular_kernel_2/doc/Circular_kernel_2/Concepts/CircularKernel--Split_2.h -text
Circular_kernel_2/doc/Circular_kernel_2/Concepts/CircularKernel.h -text
Circular_kernel_2/doc/Circular_kernel_2/PackageDescription.txt -text
Circular_kernel_2/doc/Circular_kernel_2/examples.txt -text
Circular_kernel_2/doc/Circular_kernel_2/fig/Boolean_operation.png -text svneol=unset#image/png
Circular_kernel_2/doc/Circular_kernel_2/fig/Boolean_operation_detail.png -text svneol=unset#image/png
Circular_kernel_2/doc_tex/Circular_kernel_2/fig/Boolean_operation.png -text
@ -1952,6 +1955,7 @@ Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--MakeThetaMonot
Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Split_3.h -text
Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel.h -text
Circular_kernel_3/doc/Circular_kernel_3/PackageDescription.txt -text
Circular_kernel_3/doc/Circular_kernel_3/examples.txt -text
Circular_kernel_3/doc/Circular_kernel_3/fig/def_circles_extreme_pt.pdf -text svneol=unset#application/pdf
Circular_kernel_3/doc/Circular_kernel_3/fig/def_circles_extreme_pt.png -text svneol=unset#image/png
Circular_kernel_3/doc/Circular_kernel_3/fig/def_meridian.pdf -text svneol=unset#application/pdf
@ -2834,6 +2838,7 @@ Installation/update_CHANGES -text
Interpolation/doc/Interpolation/CGAL/Interpolation_gradient_fitting_traits_2.h -text
Interpolation/doc/Interpolation/CGAL/Interpolation_traits_2.h -text
Interpolation/doc/Interpolation/CGAL/Voronoi_intersection_2_traits_3.h -text
Interpolation/doc/Interpolation/CGAL/examples.txt -text
Interpolation/doc/Interpolation/CGAL/interpolation_functions.h -text
Interpolation/doc/Interpolation/CGAL/natural_neighbor_coordinates_2.h -text
Interpolation/doc/Interpolation/CGAL/regular_neighbor_coordinates_2.h -text
@ -4688,6 +4693,7 @@ Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3Tri
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3TriangulationDSVertexBase_3.h -text
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/PackageDescription.txt -text
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Periodic_3_triangulation_3.txt -text
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/examples.txt -text
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/fig/flips.gif -text svneol=unset#image/gif
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/fig/flips.pdf -text svneol=unset#application/pdf
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/fig/it_STORED.jpg -text svneol=unset#image/jpeg
@ -4771,6 +4777,7 @@ Point_set_processing_3/doc/Point_set_processing_3/CGAL/random_simplify_point_set
Point_set_processing_3/doc/Point_set_processing_3/CGAL/remove_outliers.h -text
Point_set_processing_3/doc/Point_set_processing_3/PackageDescription.txt -text
Point_set_processing_3/doc/Point_set_processing_3/Point_set_processing_3.txt -text
Point_set_processing_3/doc/Point_set_processing_3/examples.txt -text
Point_set_processing_3/doc/Point_set_processing_3/fig/grid_simplification.jpg -text svneol=unset#image/jpeg
Point_set_processing_3/doc/Point_set_processing_3/fig/introduction.jpg -text svneol=unset#image/jpeg
Point_set_processing_3/doc/Point_set_processing_3/fig/mst_orient_normals.jpg -text svneol=unset#image/jpeg
@ -5056,6 +5063,7 @@ Polynomial/doc/Polynomial/Concepts/PolynomialTraits_d.h -text
Polynomial/doc/Polynomial/Concepts/Polynomial_d.h -text
Polynomial/doc/Polynomial/PackageDescription.txt -text
Polynomial/doc/Polynomial/Polynomial.txt -text
Polynomial/doc/Polynomial/examples.txt -text
Polynomial/doc/Polynomial/fig/Polynomial.png -text svneol=unset#image/png
Polynomial/doc/Polynomial/fig/sturm_habicht_def.gif -text svneol=unset#image/gif
Polynomial/doc/Polynomial/fig/subresultant_def.gif -text svneol=unset#image/gif
@ -5204,7 +5212,6 @@ QP_solver/doc/QP_solver/CGAL/QP_functions.h -text
QP_solver/doc/QP_solver/CGAL/QP_models.h -text
QP_solver/doc/QP_solver/CGAL/QP_options.h -text
QP_solver/doc/QP_solver/CGAL/QP_solution.h -text
QP_solver/doc/QP_solver/Classified.txt -text
QP_solver/doc/QP_solver/Concepts/LinearProgram.h -text
QP_solver/doc/QP_solver/Concepts/MPSFormat.h -text
QP_solver/doc/QP_solver/Concepts/NonnegativeLinearProgram.h -text
@ -5682,6 +5689,7 @@ Spatial_sorting/doc/Spatial_sorting/Concepts/SpatialSortingTraits_3.h -text
Spatial_sorting/doc/Spatial_sorting/Concepts/SpatialSortingTraits_d.h -text
Spatial_sorting/doc/Spatial_sorting/PackageDescription.txt -text
Spatial_sorting/doc/Spatial_sorting/Spatial_sorting.txt -text
Spatial_sorting/doc/Spatial_sorting/examples.txt -text
Spatial_sorting/doc/Spatial_sorting/fig/Hilbert-median.gif -text svneol=unset#image/gif
Spatial_sorting/doc/Spatial_sorting/fig/Hilbert-median.pdf -text svneol=unset#application/pdf
Spatial_sorting/doc/Spatial_sorting/fig/Hilbert-middle.gif -text svneol=unset#image/gif
@ -6021,6 +6029,7 @@ Stream_lines_2/doc/Stream_lines_2/Concepts/StreamLinesTraits_2.h -text
Stream_lines_2/doc/Stream_lines_2/Concepts/VectorField_2.h -text
Stream_lines_2/doc/Stream_lines_2/PackageDescription.txt -text
Stream_lines_2/doc/Stream_lines_2/Stream_lines_2.txt -text
Stream_lines_2/doc/Stream_lines_2/examples.txt -text
Stream_lines_2/doc/Stream_lines_2/fig/1.gif -text svneol=unset#image/gif
Stream_lines_2/doc/Stream_lines_2/fig/1.pdf -text svneol=unset#application/pdf
Stream_lines_2/doc/Stream_lines_2/fig/2.gif -text svneol=unset#image/gif
@ -6065,6 +6074,7 @@ Subdivision_method_3/doc/Subdivision_method_3/Concepts/PTQMask_3.h -text
Subdivision_method_3/doc/Subdivision_method_3/Concepts/Sqrt3Mask_3.h -text
Subdivision_method_3/doc/Subdivision_method_3/PackageDescription.txt -text
Subdivision_method_3/doc/Subdivision_method_3/Subdivision_method_3.txt -text
Subdivision_method_3/doc/Subdivision_method_3/examples.txt -text
Subdivision_method_3/doc/Subdivision_method_3/fig/CCBorderMask.pdf -text svneol=unset#application/pdf
Subdivision_method_3/doc/Subdivision_method_3/fig/CCBorderMask.png -text svneol=unset#image/png
Subdivision_method_3/doc/Subdivision_method_3/fig/CCSubdivision.png -text svneol=unset#image/png
@ -6203,6 +6213,7 @@ Surface_mesh_simplification/doc/Surface_mesh_simplification/Concepts/GetPlacemen
Surface_mesh_simplification/doc/Surface_mesh_simplification/Concepts/StopPredicate.h -text
Surface_mesh_simplification/doc/Surface_mesh_simplification/PackageDescription.txt -text
Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt -text
Surface_mesh_simplification/doc/Surface_mesh_simplification/examples.txt -text
Surface_mesh_simplification/doc/Surface_mesh_simplification/fig/Illustration-Simplification-ALL.jpg -text svneol=unset#image/jpeg
Surface_mesh_simplification/doc/Surface_mesh_simplification/fig/Illustration-Simplification-ALL.pdf -text svneol=unset#application/pdf
Surface_mesh_simplification/doc/Surface_mesh_simplification/fig/border_collapse1.pdf -text svneol=unset#application/pdf
@ -6750,6 +6761,7 @@ Triangulation_3/doc/TDS_3/Concepts/TriangulationDSVertexBase_3.h -text
Triangulation_3/doc/TDS_3/Concepts/TriangulationDataStructure_3.h -text
Triangulation_3/doc/TDS_3/PackageDescription.txt -text
Triangulation_3/doc/TDS_3/TriangulationDS_3.txt -text
Triangulation_3/doc/TDS_3/examples.txt -text
Triangulation_3/doc/TDS_3/fig/comborient.gif -text svneol=unset#image/gif
Triangulation_3/doc/TDS_3/fig/comborient.pdf -text svneol=unset#application/pdf
Triangulation_3/doc/TDS_3/fig/design_tds.gif -text svneol=unset#image/gif
@ -6792,6 +6804,7 @@ Triangulation_3/doc/Triangulation_3/Concepts/TriangulationVertexBase_3.h -text
Triangulation_3/doc/Triangulation_3/Concepts/WeightedPoint.h -text
Triangulation_3/doc/Triangulation_3/PackageDescription.txt -text
Triangulation_3/doc/Triangulation_3/Triangulation_3.txt -text
Triangulation_3/doc/Triangulation_3/examples.txt -text
Triangulation_3/doc/Triangulation_3/fig/Delaunay_3.jpg -text svneol=unset#image/jpeg
Triangulation_3/doc/Triangulation_3/fig/HD.gif -text svneol=unset#image/gif
Triangulation_3/doc/Triangulation_3/fig/HD.pdf -text svneol=unset#application/pdf

View File

@ -4,7 +4,6 @@ namespace CGAL {
\mainpage 3D Alpha Shapes
\anchor Chapter_3D_Alpha_Shapes
\anchor I1ChapterAlphashapes3D
\autotoc
\authors Tran Kai Frank Da, Sébastien Loriot, and Mariette Yvinec

View File

@ -155,10 +155,12 @@ this chapter introduces a new graph concept, the `HalfedgeGraph`.
## Example: Minimum Spanning Tree of a Polyhedral Surface ##
The example code computes the minimum spanning tree on a polyhedral surface.
More examples can be found in Chapter \ref chaptermeshsimplification on surface mesh simplification.
The example code computes the minimum spanning tree on a polyhedral
surface. More examples can be found in Chapter
\ref Chapter_Triangulated_Surface_Mesh_Simplification on surface mesh
simplification.
\cgalexample{BGL/kruskal.cpp}
\cgalexample{BGL_polyhedron_3/kruskal.cpp}
## Example: Using Vertices, and Edges with an ID ##
@ -168,7 +170,7 @@ field stored in a Polyhedron vertex.
The main function illustrates the access to the id() field.
\cgalexample{BGL/kruskal_with_stored_id.cpp}
\cgalexample{BGL_polyhedron_3/kruskal_with_stored_id.cpp}
# Triangulations as Models of the Boost Graph Concept # {#BGLTriangulations}
@ -192,7 +194,7 @@ spanning tree algorithm on it. Because the vertex handles of the triangulation a
in an array, we have to provide a property map that maps vertex handles to
int's in the range `[0, t.number_of_vertices())`.
\cgalexample{BGL/emst.cpp}
\cgalexample{BGL_triangulation_2/emst.cpp}
## Example: Storing the Vertex ID in the Vertex ##
@ -211,7 +213,7 @@ It is in the users responsibility to set the indices properly.
The example further illustrates that the graph traits also works
for the Delaunay triangulation.
\cgalexample{BGL/dijkstra_with_internal_properties.cpp}
\cgalexample{BGL_triangulation_2/dijkstra_with_internal_properties.cpp}
# Arrangements as Models of the Boost Graph Concept # {#BGLArrangements}
@ -287,7 +289,7 @@ arrangement \f$ v_0\f$. Note the usage of the `Arr_vertex_index_map` and
the `Arr_vertex_property_map` classes. The latter one, instantiated by
the type `double` is used to map vertices to their distances from \f$ v_0\f$.
\cgalexample{BGL/primal.cpp}
\cgalexample{BGL_arrangement_2/primal.cpp}
\subsection arr_sssecbgl_dual Example for the Dual of an Arrangement as Graph
@ -324,7 +326,7 @@ with an unsigned integer, marking the discover time of the face and use a
breadth-first-search visitor to obtain these times and update the faces
accordingly:
\cgalexample{BGL/dual.cpp}
\cgalexample{BGL_arrangement_2/dual.cpp}
*/
} /* namespace CGAL */

13
BGL/doc/BGL/examples.txt Normal file
View File

@ -0,0 +1,13 @@
/*!
\example BGL_arrangement_2/arr_print.h
\example BGL_arrangement_2/arr_rational_nt.h
\example BGL_arrangement_2/dual.cpp
\example BGL_arrangement_2/primal.cpp
\example BGL_polyhedron_3/cube.off
\example BGL_polyhedron_3/distance.cpp
\example BGL_polyhedron_3/kruskal.cpp
\example BGL_polyhedron_3/kruskal_with_stored_id.cpp
\example BGL_triangulation_2/dijkstra.cpp
\example BGL_triangulation_2/dijkstra_with_internal_properties.cpp
\example BGL_triangulation_2/emst.cpp
*/

View File

@ -23,7 +23,7 @@ on a line and written to standard output. The example
shows that it is advisable to switch on random shuffling
in order to deal with a 'bad' order of the input points.
\cgalexample{Bounding_volumes/min_circle_2.cpp}
\cgalexample{Min_circle_2/min_circle_2.cpp}
Other classes for which we provide solutions are ellipses
(`CGAL::Min_ellipse_2<Traits>`), rectangles

View File

@ -130,12 +130,12 @@ points and a \f$ 1.01\f$-approximation of \f$ \mel(P)\f$ as an EPS-file, which
you can view using <TT>gv</TT>, for instance. (In both examples you can
change the variables `n` and `d` to experiment with the code.)
\cgalexample{Bounding_volumes/ellipsoid.cpp}
\cgalexample{Approximate_min_ellipsoid_d/ellipsoid.cpp}
The second program outputs the approximation in a format suitable
for display in Maplesoft's Maple.
\cgalexample{Bounding_volumes/ellipsoid_for_maple.cpp}
\cgalexample{Approximate_min_ellipsoid_d/ellipsoid_for_maple.cpp}
*/
template< typename Traits >

View File

@ -68,7 +68,7 @@ for validity each takes linear time.
To illustrate the creation of `Min_circle_2` and to show that
randomization can be useful in certain cases, we give an example.
\cgalexample{Bounding_volumes/min_circle_2.cpp}
\cgalexample{Min_circle_2/min_circle_2.cpp}
*/
template< typename Traits >

View File

@ -52,7 +52,7 @@ To illustrate the usage of `Min_ellipse_2` and to show that randomization
can be useful in certain cases, we give an example. The example also
shows how the coefficents of the constructed ellipse can be accessed.
\cgalexample{Bounding_volumes/min_ellipse_2.cpp}
\cgalexample{Min_ellipse_2/min_ellipse_2.cpp}
*/
template< typename Traits >

View File

@ -68,7 +68,7 @@ each take linear time.
### Example ###
\cgalexample{Bounding_volumes/min_sphere_d.cpp}
\cgalexample{Min_sphere_d/min_sphere_d.cpp}
*/
template< typename Traits >

View File

@ -95,7 +95,7 @@ is not supported yet.
### Example ###
\cgalexample{Bounding_volumes/min_sphere_of_spheres_d_d.cpp}
\cgalexample{Min_sphere_of_spheres_d/min_sphere_of_spheres_d_d.cpp}
*/
template< typename Traits >
@ -232,8 +232,9 @@ Cartesian_const_iterator center_cartesian_begin( )
const;
/*!
returns the corresponding past-the-end iterator, i.e.
`center_cartesian_begin()+Traits::D`. \pre `minsphere` is not empty.
returns the corresponding past-the-end iterator, i.e.\
`center_cartesian_begin()+Traits::D`.
\pre `minsphere` is not empty.
*/
Cartesian_const_iterator center_cartesian_end( )
const;

View File

@ -55,7 +55,7 @@ The following code generates a random convex polygon
`P` with 20 vertices and computes the minimum enclosing
parallelogram of `P`.
\cgalexample{Bounding_volumes/minimum_enclosing_parallelogram_2.cpp}
\cgalexample{Min_quadrilateral_2/minimum_enclosing_parallelogram_2.cpp}
*/
@ -124,7 +124,7 @@ The following code generates a random convex polygon
`P` with 20 vertices and computes the minimum enclosing
rectangle of `P`.
\cgalexample{Bounding_volumes/minimum_enclosing_rectangle_2.cpp}
\cgalexample{Min_quadrilateral_2/minimum_enclosing_rectangle_2.cpp}
*/
@ -192,7 +192,7 @@ The following code generates a random convex polygon
`P` with 20 vertices and computes the minimum enclosing
strip of `P`.
\cgalexample{Bounding_volumes/minimum_enclosing_strip_2.cpp}
\cgalexample{Min_quadrilateral_2/minimum_enclosing_strip_2.cpp}
*/

View File

@ -257,7 +257,7 @@ piercing rectangles \cite sw-rpppp-96.
The following code generates a random set of ten points
and computes its two-centers.
\cgalexample{Bounding_volumes/rectangular_p_center_2.cpp}
\cgalexample{Rectangular_p_center_2/rectangular_p_center_2.cpp}
*/
template < class ForwardIterator, class

View File

@ -5,7 +5,7 @@
The concept `RectangularPCenterTraits_2` defines types and operations
needed to compute rectilinear \f$ p\f$-centers of a planar point set
using the function `::rectangular_p_center_2`.
using the function `CGAL::rectangular_p_center_2`.
\hasModel `CGAL::Rectangular_p_center_default_traits_2<K>`

View File

@ -0,0 +1,17 @@
/*!
\example Approximate_min_ellipsoid_d/ellipsoid.cpp
\example Approximate_min_ellipsoid_d/ellipsoid_for_maple.cpp
\example Min_annulus_d/min_annulus_d.cpp
\example Min_annulus_d/min_annulus_d_fast_exact.cpp
\example Min_circle_2/min_circle_2.cpp
\example Min_ellipse_2/min_ellipse_2.cpp
\example Min_quadrilateral_2/minimum_enclosing_parallelogram_2.cpp
\example Min_quadrilateral_2/minimum_enclosing_rectangle_2.cpp
\example Min_quadrilateral_2/minimum_enclosing_strip_2.cpp
\example Min_sphere_d/min_sphere_d.cpp
\example Min_sphere_of_spheres_d/benchmark.cpp
\example Min_sphere_of_spheres_d/min_sphere_of_spheres_d_2.cpp
\example Min_sphere_of_spheres_d/min_sphere_of_spheres_d_3.cpp
\example Min_sphere_of_spheres_d/min_sphere_of_spheres_d_d.cpp
\example Rectangular_p_center_2/rectangular_p_center_2.cpp
*/

View File

@ -1,3 +1,4 @@
/*!
\example CGAL_ipelets/test_grabbers.cpp
\example CGAL_ipelets/simple_triangulation.cpp
*/

View File

@ -3,7 +3,6 @@ namespace CGAL {
\mainpage 2D Circular Geometry %Kernel
\anchor Chapter_2D_Circular_Geometry_Kernel
\anchor chaptercircularkernel
\autotoc
\authors Pedro Machado Manh&atilde;es de Castro, Sylvain Pion, and Monique Teillaud

View File

@ -6,7 +6,9 @@
Testing whether the interiors of two curves overlap.
\bug There is no DoOverlap in the Linear Kernel.
\refines ::Kernel::DoOverlap_2
\bug DoOverlap_2 does not exist in the Kernel.
*/

View File

@ -0,0 +1,4 @@
/*!
\example Circular_kernel_2/intersecting_arcs.cpp
\example Circular_kernel_2/functor_has_on_2.cpp
*/

View File

@ -139,7 +139,7 @@ arc is defined on a bipolar circle.
# Software Design # {#Circular_kernel_3Software}
The design of `Spherical_kernel_3` is similar to the design of
`Circular_kernel_2` (see Chapter \ref chaptercircularkernel).
`Circular_kernel_2` (see Chapter \ref Chapter_2D_Circular_Geometry_Kernel).
It has two template parameters:
<UL>
<LI> the first parameter must model the \cgal
@ -188,7 +188,7 @@ then compared.
# Design and Implementation History # {#Circular_kernel_3Design}
This package follows the 2D circular kernel package (see
Chapter \ref chaptercircularkernel), which induced the basic
Chapter \ref Chapter_2D_Circular_Geometry_Kernel), which induced the basic
choices of design.
Julien Hazebrouck and Damien Leroy participated in a first

View File

@ -4,7 +4,7 @@
\cgalconcept
\refines ::Kernel::ComputeApproximateSquaredLength_3
In addition, an object \refines ::fo of this type must provide:
In addition, an object `fo` of this type must provide:
*/

View File

@ -5,7 +5,9 @@
\refines ::Kernel::DoOverlap_3
An object \refines ::fo of this type must provide:
\bug DoOverlap_3 does not exist in the Kernel
An object `fo` of this type must provide:
*/
class SphericalKernel::DoOverlap_3 {
public:

View File

@ -0,0 +1,5 @@
/*!
\example Circular_kernel_3/intersecting_spheres.cpp
\example Circular_kernel_3/functor_has_on_3.cpp
\example Circular_kernel_3/functor_compare_theta_3.cpp
*/

View File

@ -27,7 +27,6 @@ extreme points and subsequences of hull points, such as the lower and
upper hull of a set of points.
\image html saarhull.png
\image latex saarhull width=6.5cm
\section secconvex_hull_2 Convex Hull

View File

@ -31,7 +31,7 @@ in one of three ways in \cgal: using a static algorithm,
using an incremental construction algorithm, or using a
triangulation to get a fully dynamic computation.
\section secconvex_hull_3 Static Convex Hull Construction
# Static Convex Hull Construction # {#secconvex_hull_3}
The function
`::convex_hull_3` provides an
@ -40,7 +40,7 @@ dimensionsquickhull, 3D. There are two versions of this
function available, one that can be used when it is known that the output
will be a polyhedron (<I>i.e.</I>, there are more than three points and
they are not all collinear) and one that handles all degenerate cases
and returns a `::Object`, which may be a point, a segment, a
and returns a `Object`, which may be a point, a segment, a
triangle, or a polyhedron. Both versions accept a range of input
iterators defining the set of points whose convex hull is to be computed
and a traits class defining the geometric types and predicates used in
@ -77,15 +77,15 @@ of the convex hull.
# Incremental Convex Hull Construction # {#Convex_hull_3Incremental}
The function `::convex_hull_incremental_3` C provides an
The function `::convex_hull_incremental_3` provides an
interface similar to `::convex_hull_3` for the \f$ d\f$-dimensional
incremental construction algorithm \cite cms-frric-93
implemented by the class `::Convex_hull_d<R>` that is specialized
implemented by the class `Convex_hull_d<R>` that is specialized
to three dimensions. This function accepts an iterator range over a set of
input points and returns a polyhedron, but it does not have a traits class
in its interface. It uses the kernel
class `Kernel` used in the polyhedron type to define an instance of the
adapter traits class `::Convex_hull_d_traits_3<Kernel>`.
adapter traits class `Convex_hull_d_traits_3<Kernel>`.
In almost all cases, the static and the dynamic version will
be faster than the incremental convex hull algorithm (mainly
@ -95,10 +95,10 @@ completeness and educational purposes. You should use the dynamic
version when you need an efficient incremental convex hull algorithm.
To use the full functionality available with the \f$ d\f$-dimensional class
`::Convex_hull_d<R>` in three dimensions (<I>e.g.</I>, the ability
`Convex_hull_d<R>` in three dimensions (<I>e.g.</I>, the ability
to insert new points and to query if a point lies in the convex hull or not),
you can instantiate the class `::Convex_hull_d<K>` with the adapter
traits class `::Convex_hull_d_traits_3<K>`, as shown in the following
you can instantiate the class `Convex_hull_d<K>` with the adapter
traits class `Convex_hull_d_traits_3<K>`, as shown in the following
example.
## Example ##
@ -108,7 +108,7 @@ example.
# Dynamic Convex Hull Construction # {#Convex_hull_3Dynamic}
Fully dynamic maintenance of a convex hull can be achieved by using the
class `::Delaunay_triangulation_3`. This class supports insertion
class `Delaunay_triangulation_3`. This class supports insertion
and removal of points (<I>i.e.</I>, vertices of the triangulation) and the
convex hull edges are simply the finite edges of infinite faces.
The following example illustrates the dynamic construction of a convex hull.
@ -128,9 +128,9 @@ not all of them are vertices of the hull.
In the following, we compare the running times of the three approaches to compute 3D convex hulls.
For the static version (using `::convex_hull_3`) and the dynamic version
(using `::Delaunay_triangulation_3` and `::convex_hull_3_to_polyhedron_3`), the kernel
used was `::Exact_predicates_inexact_constructions_kernel`. For the incremental version
(using `::convex_hull_incremental_3`), the kernel used was `::Exact_predicates_exact_constructions_kernel`.
(using `Delaunay_triangulation_3` and `::convex_hull_3_to_polyhedron_3`), the kernel
used was `Exact_predicates_inexact_constructions_kernel`. For the incremental version
(using `::convex_hull_incremental_3`), the kernel used was `Exact_predicates_exact_constructions_kernel`.
To compute the convex hull of a million of random points in a unit ball the static approach needed 1.63s, while
the dynamic and incremental approaches needed 9.50s and 11.54s respectively.

View File

@ -42,7 +42,7 @@ The convex hull class is parameterized by a traits class that provides
model <I>e.g.</I>, `Homogeneous<RT>` or `Cartesian<FT>` for use
with `Convex_hull_d`, where the dimension is fixed to three.
The validity of the computed convex hull can be checked using the
member function `::is_valid`, which implements the algorithm
member function `Convex_hull_d::is_valid`, which implements the algorithm
of Mehlhorn <I>et al.</I>\cite mnssssu-cgpvg-96 to determine if
the vertices of a given polytope constitute a strongly convex point
set or not.

View File

@ -6,7 +6,7 @@
\todo check generated documentation
\PkgDescriptionBegin{dD Convex Hulls and Delaunay Triangulations,PkgConvexHullDSummary}
\PkgPicture{convex_hull_d-teaser.png}
\PkgAuthor{Susan Hert and Michael Seel}
\PkgAuthor{Susan Hert and Michael Seel}
\PkgDesc{This package provides functions for computing convex hulls and Delaunay triangulations in \f$ d\f$-dimensional Euclidean space.}
\PkgSince{2.3}
\PkgBib{cgal:hs-chdt3}

View File

@ -19,7 +19,7 @@ programs, all of them computing the 2D convex hull of a set of points.
You will find the same ideas in other
# Points in a Built-in Array # {#intro_array }
# Points in a Built-in Array # {#intro_array}
In the first example we have as input an array of five points.
As the convex hull of these points is a subset of the input
@ -45,7 +45,7 @@ point written, so the pointer difference tells us how
many points are on the convex hull.
# Points in a Vector # { #intro_vector }
# Points in a Vector # {#intro_vector}
In the second example we replace the built-in array
by a `std::vector` of the Standard Template Library.
@ -71,7 +71,7 @@ iterator generated by the helper function
`std::back_inserter(result)`. This output iterator does nothing when
incremented, and calls `result.push_back(..)` on the assignment.
# Points in Streams # { #intro_streams }
# Points in Streams # {#intro_streams}
The next example program reads a sequence of points from standard
input `std::cin` and writes the points on the convex hull to standard
@ -108,7 +108,7 @@ containers. If you don't know the \stl, you maybe better first
familiarize yourself with its basic ideas.
# About Traits Classes # { #intro_traits }
# About Traits Classes # {#intro_traits}
If you look at the manual page of the function `CGAL::convex_hull_2()`
and the other 2D convex hull algorithms, you see that they come in two
@ -181,7 +181,7 @@ given by a direction, which is hardwired in the class
# Further Reading # { #intro_further }
# Further Reading # {#intro_further}
We also recommend the standard text books by
Josuttis \cite cgal:j-csl-99, or Austern \cite cgal:a-gps-98 for the

View File

@ -171,7 +171,7 @@ return type of calling the functor with an argument of type
Much of the \cgal code contains assert statements for preconditions, and postconditions of functions
as well as in the code. These assertions can be switched on and off per package
and the user can change the error behaviour. For details see Section \ref secchecks
of Chapter Chapter_STL_Extensions_for_CGAL.
of Chapter Chapter_STL_Extensions_for_CGAL.
\section seccgal_version Identifying the Version of CGAL

View File

@ -30,6 +30,7 @@ namespace for the XML file to be processed properly. -->
<item>./tags/STL_Extension.tag=../../CGAL.CGAL.STL-Extensions-for-CGAL/html</item>
<item>./tags/Algebraic_foundations.tag=../../CGAL.CGAL.Algebraic-Foundations/html</item>
<item>./tags/Circulator.tag=../../CGAL.CGAL.Handles-and-Circulators/html</item>
<item>./tags/Stream_support.tag=../../CGAL.CGAL.IO-Streams/html</item>
</list>
<string name="LAYOUT_FILE">DoxygenLayoutPackage.xml</string>
<list name="ALIASES" append="true">
@ -51,6 +52,7 @@ namespace for the XML file to be processed properly. -->
<string name="EXAMPLE_PATH">../STL_Extension/examples</string>
<list name="TAGFILES" append="false">
<item>./tags/Manual.tag=../../CGAL.CGAL/html</item>
<item>./tags/Circulator.tag=../../CGAL.CGAL.Handles-and-Circulators/html</item>
</list>
</doxygen>
</project>
@ -106,6 +108,8 @@ namespace for the XML file to be processed properly. -->
<bool name="EXTRACT_ALL">false</bool>
<!-- <bool name="HIDE_UNDOC_MEMBERS">true</bool> -->
<bool name="HIDE_UNDOC_CLASSES">true</bool>
<!-- too many warnings -->
<bool name="WARN_IF_UNDOCUMENTED">false</bool>
<bool name="SHOW_INCLUDE_FILES">false</bool>
<list name="TAGFILES" append="true">
<item>./tags/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface/html</item>
@ -125,6 +129,7 @@ namespace for the XML file to be processed properly. -->
<string name="EXAMPLE_PATH">../Surface_reconstruction_points_3/examples</string>
<bool name="EXTRACT_ALL">false</bool>
<bool name="HIDE_UNDOC_CLASSES">true</bool>
<bool name="WARN_IF_UNDOCUMENTED">false</bool>
<bool name="SHOW_INCLUDE_FILES">true</bool>
<list name="TAGFILES" append="true">
<item>./tags/Surface_mesher.tag=../../CGAL.CGAL.3D-Surface-Mesh-Generation/html</item>
@ -282,6 +287,7 @@ namespace for the XML file to be processed properly. -->
<item>./tags/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface/html</item>
<item>./tags/Arrangement_on_surface_2.tag=../../CGAL.CGAL.2D-Arrangements/html</item>
<item>./tags/Triangulation_2.tag=../../CGAL.CGAL.2D-Triangulations/html</item>
<item>./tags/Surface_mesh_simplification.tag=../../CGAL.CGAL.Triangulated-Surface-Mesh-Simplification/html</item>
</list>
</doxygen>
</project>
@ -300,7 +306,6 @@ namespace for the XML file to be processed properly. -->
<string name="IMAGE_PATH">../Polyhedron/doc/Polyhedron/fig</string>
<list name="TAGFILES" append="true">
<item>./tags/HalfedgeDS.tag=../../CGAL.CGAL.Halfedge-Data-Structures/html</item>
<item>./tags/Stream_support.tag=../../CGAL.CGAL.IO-Streams/html</item>
</list>
</doxygen>
</project>
@ -420,6 +425,8 @@ namespace for the XML file to be processed properly. -->
<string name="GENERATE_TAGFILE">./tags/Stream_support.tag</string>
<string name="EXAMPLE_PATH">../Stream_support/examples</string>
<string name="IMAGE_PATH">../Stream_support/doc/IOstream/fig</string>
<list name="TAGFILES" append="false">
</list>
</doxygen>
</project>
@ -435,8 +442,8 @@ namespace for the XML file to be processed properly. -->
<string name="IMAGE_PATH">../Convex_hull_3/doc/Convex_hull_3/fig</string>
<list name="TAGFILES" append="true">
<item>./tags/Convex_hull_2.tag=../../CGAL.CGAL.2D-Convex-Hulls-and-Extreme-Points/html</item>
<item>./tags/Triangulation_3.tag=../../CGAL.CGAL.3D-Triangulation/html</item>
<item>./tags/Convex_hull_d.tag=../../CGAL.CGAL.dD-Convex-Hulls-and-Delaunay-Triangulations/html</item>
<item>./tags/Triangulation_3.tag=../../CGAL.CGAL.3D-Triangulation/html</item>
<item>./tags/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface</item>
</list>
</doxygen>
@ -449,6 +456,7 @@ namespace for the XML file to be processed properly. -->
<string name="STRIP_FROM_PATH">../Convex_hull_d/doc/Convex_hull_d/</string>
<string name="STRIP_FROM_INC_PATH">../Convex_hull_d/doc/Convex_hull_d/</string>
<string name="GENERATE_TAGFILE">./tags/Convex_hull_d.tag</string>
<string name="IMAGE_PATH">../Convex_hull_d/doc/Convex_hull_d/fig</string>
</doxygen>
</project>
@ -518,6 +526,8 @@ namespace for the XML file to be processed properly. -->
<item>./tags/Triangulation_2.tag=../../CGAL.CGAL.2D-Triangulation/html</item>
<item>./tags/Number_types.tag=../../CGAL.CGAL.Number-Types/html</item>
<item>./tags/Algebraic_foundations.tag=../../CGAL.CGAL.Algebraic-Foundations/html</item>
<item>./tags/Circular_kernel_2.tag=../../CGAL.CGAL.2D-Circular-Geometry-Kernel/html</item>
<item>./tags/Circular_kernel_3.tag=../../CGAL.CGAL.3D-Spherical-Geometry-Kernel/html</item>
</list>
</doxygen>
</project>
@ -656,6 +666,9 @@ namespace for the XML file to be processed properly. -->
<string name="GENERATE_TAGFILE">./tags/Envelope_2.tag</string>
<string name="EXAMPLE_PATH">../Envelope_2/examples</string>
<string name="IMAGE_PATH">../Envelope_2/doc/Envelope_2/fig</string>
<list name="TAGFILES" append="true">
<item>./tags/Arrangement_on_surface_2.tag=../../CGAL.CGAL.2D-Arrangements/html</item>
</list>
</doxygen>
</project>
@ -683,6 +696,7 @@ namespace for the XML file to be processed properly. -->
<string name="EXAMPLE_PATH">../Minkowski_sum_2/examples</string>
<string name="IMAGE_PATH">../Minkowski_sum_2/doc/Minkowski_sum_2/fig</string>
<list name="TAGFILES" append="true">
<item>./tags/Arrangement_on_surface_2.tag=../../CGAL.CGAL.2D-Arrangements/html</item>
<item>./tags/Polygon.tag=../../CGAL.CGAL.Polygon/html</item>
<item>./tags/Boolean_set_operations_2.tag=../../CGAL.CGAL.2D-Regularized-Boolean-Set-Operations/html</item>
</list>
@ -745,6 +759,7 @@ namespace for the XML file to be processed properly. -->
<string name="STRIP_FROM_INC_PATH">../Spatial_searching/doc/Spatial_searching/</string>
<string name="GENERATE_TAGFILE">./tags/Spatial_searching.tag</string>
<string name="EXAMPLE_PATH">../Spatial_searching/examples</string>
<string name="IMAGE_PATH">../Spatial_searching/doc/Spatial_searching/fig</string>
</doxygen>
</project>
@ -869,6 +884,10 @@ namespace for the XML file to be processed properly. -->
<string name="GENERATE_TAGFILE">./tags/Snap_rounding_2.tag</string>
<string name="IMAGE_PATH">../Snap_rounding_2/doc/Snap_rounding_2/fig</string>
<string name="EXAMPLE_PATH">../Snap_rounding_2/examples</string>
<list name="TAGFILES" append="true">
<item>./tags/Arrangement_on_surface_2.tag=../../CGAL.CGAL.2D-Arrangements/html</item>
<item>./tags/Sweep_line_2.tag=../../CGAL.CGAL.2D-Intersection-of-Curves/html</item>
</list>
</doxygen>
</project>
@ -950,7 +969,10 @@ namespace for the XML file to be processed properly. -->
<string name="STRIP_FROM_INC_PATH">../CGAL_ipelets/doc/CGAL_ipelets/</string>
<string name="GENERATE_TAGFILE">./tags/CGAL_ipelets.tag</string>
<string name="IMAGE_PATH">../CGAL_ipelets/doc/CGAL_ipelets/fig</string>
<string name="EXAMPLE_PATH">../CGAL_ipelets/examples</string>
<list name="EXAMPLE_PATH">
<item>../CGAL_ipelets/examples</item>
<item>../CGAL_ipelets/demo</item>
</list>
</doxygen>
</project>
@ -1140,6 +1162,7 @@ namespace for the XML file to be processed properly. -->
<string name="EXAMPLE_PATH">../Triangulation_3/examples</string>
<list name="TAGFILES" append="true">
<item>./tags/TDS_3.tag=../../CGAL.CGAL.3D-Triangulation-Data-Structure/html</item>
<item>./tags/Geomview.tag=../../CGAL.CGAL.Geomview/html</item>
</list>
</doxygen>
</project>
@ -1156,6 +1179,8 @@ namespace for the XML file to be processed properly. -->
<list name="TAGFILES" append="true">
<item>./tags/TDS_3.tag=../../CGAL.CGAL.3D-Triangulation-Data-Structure/html</item>
<item>./tags/Triangulation_3.tag=../../CGAL.CGAL.3D-Triangulation/html</item>
<item>./tags/Spatial_sorting.tag=../../CGAL.CGAL.Spatial-Sorting/html</item>
<item>./tags/Alpha_shapes_3.tag=../../CGAL.CGAL.3D-Alpha-Shapes/html</item>
</list>
</doxygen>
</project>
@ -1201,6 +1226,7 @@ namespace for the XML file to be processed properly. -->
<string name="IMAGE_PATH">../Point_set_processing_3/doc/Point_set_processing_3/fig</string>
<string name="EXAMPLE_PATH">../Point_set_processing_3/examples</string>
<list name="TAGFILES" append="true">
<item>./tags/Surface_reconstruction_points_3.tag=../../CGAL.CGAL.Surface-Reconstruction-from-Point-Sets/html</item>
<item>./tags/Property_map.tag=../../CGAL.CGAL.CGAL-and-Boost-Property-Maps/html</item>
<item>./tags/Bounding_volumes.tag=../../CGAL.CGAL.Bounding-Volumes/html</item>
<item>./tags/Principal_component_analysis.tag=../../CGAL.CGAL.Principal-Component-Analysis/html</item>
@ -1251,6 +1277,7 @@ namespace for the XML file to be processed properly. -->
<item>../Nef_3/demo</item>
</list>
<list name="TAGFILES" append="true">
<item>./tags/Nef_2.tag=../../CGAL.CGAL.2D-Boolean-Operations-on-Nef-Polygons/html</item>
<item>./tags/Nef_S2.tag=../../CGAL.CGAL.2D-Boolean-Operations-on-Nef-Polygons-Embedded-on-the-Sphere/html</item>
<item>./tags/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface/html</item>
</list>
@ -1459,7 +1486,7 @@ namespace for the XML file to be processed properly. -->
<item>./tags/Straight_skeleton_2.tag=../../CGAL.CGAL.2D-Straight-Skeleton-and-Polygon-Offsetting/html</item>
<item>./tags/Voronoi_diagram_2.tag=../../CGAL.CGAL.2D-Voronoi-Diagram-Adaptor/html</item>
<item>./tags/Surface_mesh_simplification.tag=../../CGAL.CGAL.Triangulated-Surface-Mesh-Simplification/html</item>
<item>./tags/Subdivision_method_3.tag=../../CGAL.CGAL.3D-Surface-Subdivion-Methods/html</item>
<item>./tags/Subdivision_method_3.tag=../../CGAL.CGAL.3D-Surface-Subdivision-Methods/html</item>
<item>./tags/Stream_lines_2.tag=../../CGAL.CGAL.2D-Placement-of-Streamlines/html</item>
<item>./tags/Stream_support.tag=../../CGAL.CGAL.IO-Streams/html</item>
<item>./tags/Surface_mesh_parameterization.tag=../../CGAL.CGAL.Planar-Parameterization-of-Triangulated-Surface-Meshes</item>

View File

@ -182,7 +182,10 @@ diagrams.
\cgalexample{Envelope_2/convex_hull.cpp}
\anchor env2_figex_circ
\image html ex_circle.gif "A set of four circles, as constructed in \ref ex_envelope_circles.cpp. The lower envelope and the upper envelope are shown using thick dashed lines of different colors respectively."
\image html ex_circle.gif
<center><b>
A set of four circles, as constructed in \ref Envelope_2/ex_envelope_circles.cpp. The lower envelope and the upper envelope are shown using thick dashed lines of different colors respectively.
</b></center>
## Example for Envelope of Non-Linear Curves ##

View File

@ -17,7 +17,7 @@ a random amount.
`double` values \f$ x\f$ and \f$ y\f$ and returning an initialized point
`(x,y)` of type `P`.
Predefined implementations for these creators like the default are
described in Section \ref sectionCreatorFunctionObjects.
described in Section \ref STLCreators.
- The `value_type` of the `ForwardIterator` must be assignable
to `P`.
@ -85,7 +85,7 @@ grid whose size is determined by the number of points to be generated.
`double` values \f$ x\f$ and \f$ y\f$ and returning an initialized point
`(x,y)` of type `P`. Predefined implementations for these
creators like the default can be found in
Section \ref sectionCreatorFunctionObjects.
Section \ref STLCreators.
- The `OutputIterator` must accept values of type `P`. If the
`OutputIterator` has a `value_type` the default
initializer of the `creator` can be used. `P` is set to
@ -125,7 +125,7 @@ Returns the value of `first2` after inserting the \f$ n\f$ points.
`double` values \f$ x\f$ and \f$ y\f$ and returning an initialized point
`(x,y)` of type `P`. Predefined implementations for these
creators like the default can be found in
Section \ref sectionCreatorFunctionObjects.
Section \ref STLCreators.
- The `value_type` of the `RandomAccessIterator` must be
assignable to `P`. `P` is equal to the `value_type` of the
`RandomAccessIterator` when using the default initializer.

View File

@ -16,7 +16,7 @@ grid whose size is determined by the number of points to be generated.
`double` values \f$ x\f$, \f$ y\f$, and \f$ z\f$ and returning an initialized
point `(x,y,z)` of type `P`. Predefined implementations for
these creators like the default can be found in
Section \ref sectionCreatorFunctionObjects .
Section \ref STLCreators.
- The `OutputIterator` must accept values of type `P`. If the
`OutputIterator` has a `value_type` the default
initializer of the `creator` can be used. `P` is set to

View File

@ -25,10 +25,6 @@ domain.
R >` for some representation class `R`,
</OL>
The default traits class `Default_traits` is
`Random_convex_set_traits_2`.
.
\sa `CGAL::Random_points_in_square_2<Point_2, Creator>`
\sa `CGAL::Random_points_in_disc_2<Point_2, Creator>`
@ -48,9 +44,8 @@ origin.
\cgalexample{Generator/random_convex_set.cpp}
*/
template < class OutputIterator, class PointGenerator,
class Traits > OutputIterator random_convex_set_2( std::size_t n,
OutputIterator o, const PointGenerator& pg, Traits t =
Default_traits);
template < class OutputIterator, class PointGenerator, class Traits >
OutputIterator random_convex_set_2( std::size_t n,
OutputIterator o, const PointGenerator& pg, Traits t = Random_convex_set_traits_2);
} /* namespace CGAL */

View File

@ -18,10 +18,10 @@ Two kinds of point generators are provided: first, random point
generators and second deterministic point generators. Most random
point generators and a few deterministic point generators are provided
as input iterators. The input iterators model an infinite sequence of
points. The function `CGAL::cpp0x::copy_n()` can be used to copy a
finite sequence; see Section \ref sectionCopyN. The iterator adaptor
points. The function \ref CGAL::copy_n can be used to copy a
finite sequence. The iterator adaptor
`Counting_iterator` can be used to create finite iterator
ranges; see Section \ref sectionCountingIterator.
ranges.
Other generators are provided as functions that write to output
iterators. Further functions add degeneracies or random perturbations.
@ -49,7 +49,7 @@ distributed in a \f$ d\f$-dimensional cube (`Random_points_in_cube_d`)
or \f$ d\f$-dimensional ball (`Random_points_in_ball_d`) or on the boundary of a
sphere (`Random_points_on_sphere_d`).
For generating grid points, we provide the function
`::points_on_grid_d()` that writes to
`Random_points_on_sphere_d::points_on_grid_d()` that writes to
an output iterator.
We also provide two functions for generating more complex geometric objects.
@ -106,10 +106,10 @@ for the example output.
\anchor figureIntegerPointGenerator
\image html generators_prog2.png "Output of example program for point generators working"
\section secsegment_example Examples Generating Segments
# Examples Generating Segments # {#secsegment_example}
The following two examples illustrate the use of the generic functions
from Section \ref sectionGenericFunctions like
from Section \ref STLAlgos like
`Join_input_iterator_2` to generate
composed objects from other
generators - here two-dimensional segments from two point generators.

View File

@ -280,7 +280,6 @@ operation, i.e., the new diagonal. The new face is to the right of the
new diagonal, the old face is to the left. The time is proportional
to the distance from `h` to `g` around the face.
\image latex euler_hds
\image html euler_face.gif
*/
@ -296,7 +295,6 @@ of the face removed and the time to compute `h->prev()`.
\requires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`.
\image latex euler_hds
\image html euler_face.gif
*/
@ -341,7 +339,6 @@ after the operation, i.e., a halfedge pointing to the new vertex.
The time is proportional to the size of the face.
\pre `h` is not a border halfedge.
\image latex euler_center
\image html euler_center.gif
*/
@ -360,7 +357,6 @@ The time is proportional to the sum of the size of all incident faces.
\requires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`.
\image latex euler_center
\image html euler_center.gif
*/
Halfedge_handle erase_center_vertex( Halfedge_handle g);
@ -377,7 +373,6 @@ which is the copy of `h-opposite()`.
data structure and form a cycle: i.e., `h->vertex() == i->opposite()->vertex()`,
\f$\ldots\f$ , `j->vertex() == h->opposite()->vertex()`.
\image latex euler_loop
\image html euler_loop.gif
*/
@ -395,7 +390,6 @@ data structure unchanged.
\requires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`.
\image latex euler_loop
\image html euler_loop.gif
*/
Halfedge_handle join_loop( Halfedge_handle h, Halfedge_handle g);

View File

@ -33,7 +33,6 @@ for the incidences, the mandatory and optional member functions
possible for vertices, halfedges, and faces.
\anchor figureOptionalMethods
\image latex hds_optional "The three classes `Vertex`, `Halfedge`, and `Face` of the halfedge data structure. Member functions with shaded background are mandatory. The others are optionally supported."
\image html hds_optional_small.gif "The three classes `Vertex`, `Halfedge`, and `Face` of the halfedge data structure. Member functions with shaded background are mandatory. The others are optionally supported."
A `HalfedgeDS` organizes the internal storage of its items. Examples

View File

@ -21,7 +21,6 @@ depicts the relationship between a halfedge and its incident
halfedges, vertices, and faces.
\anchor figureHalfedgeDSOptionalMethods
\image latex hds_optional "The three classes `Vertex`, `Halfedge`, and `Face` of the halfedge data structure. Member functions with shaded background are mandatory. The others are optionally supported."
\image html hds_optional.gif "The three classes `Vertex`, `Halfedge`, and `Face` of the halfedge data structure. Member functions with shaded background are mandatory. The others are optionally supported."
For the protection of the integrity of the data structure classes such

View File

@ -68,17 +68,17 @@ public:
/*!
model of `HalfedgeDSVertex`.
*/
typedef Hidden_type Vertex_wrapper<Refs,Traits>::Vertex;
typedef Vertex_wrapper<Refs,Traits>::Vertex Vertex;
/*!
model of `HalfedgeDSHalfedge`.
*/
typedef Hidden_type Halfedge_wrapper<Refs,Traits>::Halfedge;
typedef Halfedge_wrapper<Refs,Traits>::Halfedge Halfedge;
/*!
model of `HalfedgeDSFace`.
*/
typedef Hidden_type Face_wrapper<Refs,Traits>::Face;
typedef Face_wrapper<Refs,Traits>::Face Face;
/// @}

View File

@ -22,7 +22,6 @@ variants of the halfedge data structure can omit some of these
information, for example the halfedge pointers in faces or the
storage of faces at all.
\image latex halfedge
\image html halfedge_small.gif
The halfedge data structure is a combinatorial data structure,
@ -57,7 +56,6 @@ the old implementation.
# Software Design # {#HalfedgeDSSoftware}
\anchor figureHalfedgeDSDesign
\image latex hds_design "Responsibilities of the different layers in the halfedge data-structure design." width=0.7
\image html hds_design_col.gif "Responsibilities of the different layers in the halfedge data-structure design."
@ -148,7 +146,6 @@ type for vertices are defined. The trivial traits class provides the
type used for the point. The program creates a loop, consisting
of two halfedges, one vertex and two faces, and checks its validity.
\image latex loop width=0.3
\image html loop.gif
\cgalexample{HalfedgeDS/hds_prog_default.cpp}
@ -186,16 +183,14 @@ member variable `color`.
## Example Defining a More %Compact Halfedge ##
\advancedbegin
The halfedge data structure as presented here is slightly less space
\advanced The halfedge data structure as presented here is slightly less space
efficient as, for example, the winged-edge data
structure \cite b-prcv-75, the DCEL \cite mp-fitcp-78 or variants of
the quad-edge data structure \cite gs-pmgsc-85. On the other hand,
it does not require any search operations during traversals. A
comparison can be found in \cite k-ugpdd-99.
The following example trades traversal time for a compact storage
\advanced The following example trades traversal time for a compact storage
representation using traditional C techniques (i.e., type casting and
the assumption that pointers, especially those from <TT>malloc</TT> or
<TT>new</TT>, point to even addresses). The idea goes as follows: The
@ -208,7 +203,7 @@ store this bit as the least significant bit in the next halfedge
handle. Furthermore, we do not implement a pointer to the previous
halfedge. What remains are three pointers per halfedge.
We use the static member function `halfedge_handle()` to convert
\advanced We use the static member function `halfedge_handle()` to convert
from pointers to halfedge handles. The same solution can be applied to
the list-based halfedge data structure `CGAL::HalfedgeDS_list`,
see <TT>examples/HalfedgeDS/hds_prog_compact2.cpp</TT>. Here is the
@ -216,8 +211,6 @@ example for the vector-based data structure.
\cgalexample{HalfedgeDS/hds_prog_compact.cpp}
\advancedend
## Example Using the Halfedge %Iterator ##
Two edges are created in the default halfedge data structure.

View File

@ -23,7 +23,7 @@ classes built on top of the halfedge data structure.These classes
might be more convenient to use than the halfedge data structure
directly, since the halfedge data structure is meant as an
implementation layer.See for example the `CGAL::Polyhedron_3`
class in the package \ref chapterPolyhedronRef Polyhedron.
class in the package \ref Chapter_3D_Polyhedral_Surfaces "Polyhedron".
The data structure provided here is known as the
FE-structure \cite w-ebdss-85, as

View File

@ -0,0 +1,7 @@
/*!
\example Interpolation/nn_coordinates_2.cpp
\example Interpolation/rn_coordinates_2.cpp
\example Interpolation/surface_neighbor_coordinates_3.cpp
\example Interpolation/linear_interpolation_2.cpp
\example Interpolation/sibson_interpolation_2.cpp
*/

View File

@ -22,7 +22,7 @@ Only the following members of this traits class are used:
<LI>`FT`
<LI>`Point_2`
<LI>`construct_circumcenter_2_object`
<DT><B></B><DD> Additionally, `Traits` must meet the requirements for
<LI>Additionally, `Traits` must meet the requirements for
the traits class of the `polygon_area_2` function.
</UL>
<LI>`OutputIterator::value_type` is equivalent to

View File

@ -15,7 +15,7 @@ to the power diagram which is equivalent to the intersection of the
Voronoi cell of the query point `p` with the tangent plane to the
surface at `p`.
The functions \t surface_neighbors_certified_3 also return, in
The functions \c surface_neighbors_certified_3 also return, in
addition, a Boolean value that certifies whether or not, the Voronoi
cell of `p` can be affected by points that lie outside the input
range, i.e. outside the ball centered on `p` passing through the

View File

@ -23,7 +23,7 @@ we use the function objects `C2E` and `C2F`, which must be of the form
The following example defines an efficient and exact version of the
orientation predicate over three points using the Cartesian representation
with double coordinates and without reference counting
(`Simple_cartesian<double>::Point_2`).
(`Simple_cartesian::Point_2`).
Of course, the orientation predicate can already be found in the kernel, but
you can follow this example to filter your own predicates.
It uses the fast but inexact predicate based on interval arithmetic for

View File

@ -948,7 +948,7 @@ Comparison_result compare_x(const Line_2<Kernel> &l1,
/*!
\addtogroup compare_x_circular compare_x (Circular Kernel)
\ingroup compare_x
\details See Chapter \ref chaptercircularkernel.
\details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
\code
#include <CGALCGAL/global_functions_circular_kernel_2.h>
@ -980,7 +980,7 @@ Comparison_result
/*!
\addtogroup compare_x_spherical compare_x (Spherical Kernel)
\ingroup compare_x
\details See Chapter \ref chaptersphericalkernel.
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
\code
#include <CGAL/global_functions_spherical_kernel_3.h>
@ -1059,7 +1059,7 @@ compare_xy(const Point_3<Kernel>& p, const Point_3<Kernel>& q);
/*!
\addtogroup compare_xy_circular compare_xy (Circular Kernel)
\ingroup compare_xy
\details See Chapter \ref chaptercircularkernel.
\details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
\code
#include <CGAL/global_functions_circular_kernel_2.h>
@ -1094,7 +1094,7 @@ compare_xy(const Circular_arc_point_2<CircularKernel> &p,
/*!
\addtogroup compare_xy_spherical compare_xy (Spherical Kernel)
\ingroup compare_xy
\details See Chapter \ref chaptersphericalkernel.
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
\code
#include <CGAL/global_functions_spherical_kernel_3.h>
@ -1285,7 +1285,7 @@ Comparison_result compare_y_at_x(const Point_2<Kernel> &p,
/*!
\name With the 2D Circular Kernel
See \ref chaptercircularkernel.
See \ref Chapter_2D_Circular_Geometry_Kernel.
\code
#include <CGAL/global_functions_circular_kernel_2.h>
@ -1389,7 +1389,7 @@ Comparison_result compare_y(const Line_2<Kernel> &l1,
/*!
\addtogroup compare_y_circular compare_y (Circular Kernel)
\ingroup compare_y
\details See Chapter \ref chaptercircularkernel.
\details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
\code
#include <CGAL/global_functions_circular_kernel_2.h>
@ -1420,7 +1420,7 @@ compare_y(const Circular_arc_point_2<CircularKernel> &p,
/*!
\addtogroup compare_y_spherical compare_y (Spherical Kernel)
\ingroup compare_y
\details See Chapter \ref chaptersphericalkernel.
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
\code
#include <CGAL/global_functions_circular_kernel_3.h>
@ -1487,7 +1487,7 @@ compare_xyz(const Point_3<Kernel>& p, const Point_3<Kernel>& q);
/*!
\addtogroup compare_xyz_spherical compare_xyz (Spherical Kernel)
\ingroup compare_xyz
\details See Chapter \ref chaptersphericalkernel
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
\code
#include <CGAL/global_functions_circular_kernel_3.h>
@ -1545,7 +1545,7 @@ Comparison_result compare_z(const Point_3<Kernel> &p, const Point_3<Kernel> &q);
/*!
\name With the 3D Spherical Kernel
\details See Chapter \ref chaptersphericalkernel
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
\code
#include <CGAL/global_functions_circular_kernel_3.h>

View File

@ -47,7 +47,7 @@ Also, `Type1` and `Type2` can be respectively of types
## With the 2D Circular %Kernel ##
\details See Chapter \ref chaptercircularkernel
\details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel
\code
#include <CGAL/Circular_kernel_intersections.h>
@ -63,12 +63,12 @@ the following:
- `Circular_arc_2<CircularKernel>`
An example illustrating this is presented in
Chapter \ref chaptercircularkernel.
Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
## With the 3D Spherical Kernel ##
\details See Chapter \ref chaptersphericalkernel
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
\code
#include <CGAL/Spherical_kernel_intersections.h>
@ -86,7 +86,7 @@ the following:
- `Circular_arc_3<SphericalKernel>`
An example illustrating this is presented in
Chapter \ref chaptersphericalkernel.
Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
\sa `CGAL::intersection`
*/
@ -162,8 +162,8 @@ void foo(CGAL::Segment_2<Kernel> seg, CGAL::Line_2<Kernel> line)
Examples illustrating the use of this function in the case of the 2D
Circular %Kernel and the 3D Spherical %Kernel are presented respectively
in Chapters \ref chaptercircularkernel and \ref
chaptersphericalkernel.
in Chapters \ref Chapter_2D_Circular_Geometry_Kernel and \ref
Chapter_3D_Spherical_Geometry_Kernel.
\sa `CGAL::do_intersect`
@ -379,7 +379,7 @@ Object intersection(const Plane_3<Kernel>& pl1,
/*!
\addtogroup intersection_circular intersection (Circular Kernel)
\ingroup intersection
\details See Chapter \ref chaptercircularkernel
\details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel
\code
#include <CGAL/Circular_kernel_intersections.h>
@ -433,7 +433,7 @@ intersection(const Type1 &obj1, const Type2 &obj2,
/*!
\addtogroup intersection_spherical intersection (Spherical Kernel)
\ingroup intersection
\details See Chapter \ref chaptersphericalkernel
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
\code
#include <CGAL/Spherical_kernel_intersections.h>

View File

@ -14,7 +14,7 @@ several disconnected components. The result is therefore represented as a
sequence of generalized polygons, whose edges are either line segments or
circular arcs.
The output sequence is returned via the output iterator `oi`, whose
value-type must be `Gps_circle_segment_traits_2<Kernel>::Polygon_2`.
value-type must be `Gps_circle_segment_traits_2::Polygon_2`.
\pre `P` is a simple polygon.
*/
template<class Kernel, class Container, class OutputIterator>

View File

@ -13,7 +13,7 @@ sequence of generalized polygons, such that the edges of each polygon
correspond to line segments and circular arcs, both are special types of
conic arcs, as represented by the `traits` class.
The output sequence is returned via the output iterator `oi`, whose
value-type must be `Gps_traits_2<ConicTraits>::Polygon_2`.
value-type must be `Gps_traits_2::Polygon_2`.
\pre `P` is a simple polygon.
*/
template<class ConicTraits, class Container, class OutputIterator>

View File

@ -1,10 +1,3 @@
/*! \example Minkowski_sum_2/sum_triangles.cpp */
/*! \example Minkowski_sum_2/sum_by_decomposition.cpp */
/*! \example Minkowski_sum_2/sum_with_holes.cpp */
/*! \example Minkowski_sum_2/approx_offset.cpp */
/*! \example Minkowski_sum_2/exact_offset.cpp */
/*! \example Minkowski_sum_2/exact_inset.cpp */
namespace CGAL {
/*!
@ -123,7 +116,7 @@ contains `S.number_of_holes()` holes in its interior).
<center>
\anchor mink_figsum_tri
\image html sum_triangles.gif
<b>Computing the Minkowski sum of two triangles, as done in the example program \ref sum_triangles.cpp.</b>
<b>Computing the Minkowski sum of two triangles, as done in the example program \ref Minkowski_sum_2/sum_triangles.cpp.</b>
</center>
The following example program constructs the Minkowski sum of two triangles,
@ -141,7 +134,7 @@ The file `print_util.h` includes auxiliary functions for printing polygons.
\image html tight.gif
<center>
<B>Computing the Minkowski sum of two non-convex polygons \f$ P\f$ and \f$ Q\f$, as done in the example programs \ref sum_with_holes.cpp and \ref sum_by_decomposition.cpp.</B>
<B>Computing the Minkowski sum of two non-convex polygons \f$ P\f$ and \f$ Q\f$, as done in the example programs \ref Minkowski_sum_2/sum_with_holes.cpp and \ref Minkowski_sum_2/sum_by_decomposition.cpp.</B>
</center>
In the following program we compute the Minkowski sum of two polygons
@ -205,7 +198,7 @@ vertex.
</UL>
The following example demonstrates the computation of the Minkowski sum
of the same input polygons as used in \ref sum_with_holes.cpp (as
of the same input polygons as used in \ref Minkowski_sum_2/sum_with_holes.cpp (as
depicted in Figure \ref mink_figsum_holes), using the small-side
angle-bisector decomposition strategy:
@ -337,7 +330,7 @@ namely the distance of the point \f$ q'\f$ from \f$ o_1 o_2\f$ is bounded by
speeds up the (approximate) construction of the offset polygon and the
application of set operations on such polygons. The function returns an
object of the nested type
`Gps_circle_segment_traits_2<Kernel>::Polygon_with_holes_2` representing
`Gps_circle_segment_traits_2::Polygon_with_holes_2` representing
the approximated offset polygon (recall that if \f$ P\f$ is not convex, its
offset may not be simple and may contain holes, whose boundary is also comprised
of line segments and circular arcs).
@ -347,7 +340,7 @@ of line segments and circular arcs).
\image html ex_offset.gif
<b>The offset computation performed by the example programs
\ref approx_offset.cpp and \ref exact_offset.cpp.
\ref Minkowski_sum_2/approx_offset.cpp and \ref Minkowski_sum_2/exact_offset.cpp.
The input polygon is shaded and the boundary of its
offset is drawn in a thick black line.</b></center>
@ -370,16 +363,16 @@ arrangement-traits class that is capable of handling conic arcs in an
exact manner; using the `Arr_conic_traits_2` class with the number
types provided by the <span class="textsc">Core</span> library is the preferred option.
The function returns an object of the nested type
`Gps_traits_2<ArrConicTraits>::Polygons_with_holes_2` (see the
`Gps_traits_2::Polygons_with_holes_2` (see the
documentation of the Boolean Set-Operations package for more details
on the traits-class adapter `Gps_traits_2`), which represented the
exact offset polygon.
The following example demonstrates the construction of the offset of
the same polygon that serves as an input for the example program \ref
approx_offset.cpp, presented in the previous subsection (see also
Figure \ref mink_figex_offset). Note that the resulting polygon is
smaller than the one generated by the approximated-offset function
the same polygon that serves as an input for the example program
\ref Minkowski_sum_2/approx_offset.cpp, presented in the previous
subsection (see also Figure \ref mink_figex_offset).
Note that the resulting polygon is smaller than the one generated by the approximated-offset function
(recall that each irrational line segment in this case is approximated
by two rational line segments), but the offset computation is
considerably slower:
@ -416,7 +409,7 @@ The function `approximated_inset_2 (P, r, eps, oi)` accepts a polygon
approximation for the inset of \f$ P\f$ by the radius \f$ r\f$, with the approximation
error bounded by \f$ \varepsilon\f$. The function returns its output via the
output iterator `oi`, whose value-type must be
`Gps_circle_segment_traits_2<Kernel>::Polygon_2` representing
`Gps_circle_segment_traits_2::Polygon_2` representing
the polygons that approximates the inset polygon.
\cgalexample{Minkowski_sum_2/approx_inset.cpp}
@ -426,7 +419,7 @@ the exact inset of \f$ P\f$ with radius \f$ r\f$, and returns its output via the
output iterator `oi`. The `traits` parameter should be an instance of
an arrangement-traits class that is capable of handling conic arcs in an
exact manner, whereas `oi`'s value-type must be
`Gps_traits_2<ArrConicTraits>::Polygons_2`.
`Gps_traits_2::Polygons_2`.
\cgalexample{Minkowski_sum_2/exact_inset.cpp}

View File

@ -11,7 +11,7 @@
\PkgSince{3.3}
\PkgDependsOn{\ref PkgArrangement2}
\PkgBib{cgal:w-rms2}
\PkgLicense{\ref licensesGPL "GPL"}
\PkgLicense{\ref licensesGPL "GPL"}
\PkgManuals{Chapter_2D_Minkowski_Sums,PkgMinkowskiSum2}
\PkgDescriptionEnd

View File

@ -38,13 +38,13 @@ namespace CGAL {
specifed, yet. Do not use any other than the default types for these two
template parameters.
\sa `CGAL::Nef_polyhedron_3<Traits>::Vertex`
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::Halffacet`
\sa `CGAL::Nef_polyhedron_3<Traits>::Volume`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfloop`
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace`
\sa `CGAL::Nef_polyhedron_3::Vertex`
\sa `CGAL::Nef_polyhedron_3::Halfedge`
\sa `CGAL::Nef_polyhedron_3::Halffacet`
\sa `CGAL::Nef_polyhedron_3::Volume`
\sa `CGAL::Nef_polyhedron_3::SHalfedge`
\sa `CGAL::Nef_polyhedron_3::SHalfloop`
\sa `CGAL::Nef_polyhedron_3::SFace`
\sa `CGAL::Nef_polyhedron_S2<Traits>`
\sa `CGAL::Polyhedron_3<Traits>`
@ -87,10 +87,10 @@ public:
There is no need for a user to create a `Halfedge` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed halfedges internally.
\sa `CGAL::Nef_polyhedron_3<Traits>::Vertex`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace`
\sa `CGAL::Nef_polyhedron_S2<Traits>::Sphere_point`
\sa `CGAL::Nef_polyhedron_3::Vertex`
\sa `CGAL::Nef_polyhedron_3::SHalfedge`
\sa `CGAL::Nef_polyhedron_3::SFace`
\sa `CGAL::Nef_polyhedron_S2::Sphere_point`
*/
class Halfedge {
@ -193,8 +193,8 @@ public:
of these assignment works out, the member functions `is_shalfedge()`
and `is_shalfloop()` are provided.
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfloop`
\sa `CGAL::Nef_polyhedron_3::SHalfedge`
\sa `CGAL::Nef_polyhedron_3::SHalfloop`
*/
@ -277,9 +277,9 @@ public:
There is no need for a user to create a `Halffacet` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed halffacets internally.
\sa `CGAL::Nef_polyhedron_3<Traits>::Volume`
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge`
\sa `CGAL::Nef_polyhedron_3::Volume`
\sa `CGAL::Nef_polyhedron_3::Halfedge`
\sa `CGAL::Nef_polyhedron_3::SHalfedge`
*/
@ -369,9 +369,9 @@ public:
of these assignment works out, the member functions `is_svertex()`,
`is_shalfedge()` and `is_shalfloop()` are provided.
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfloop`
\sa `CGAL::Nef_polyhedron_3::Halfedge`
\sa `CGAL::Nef_polyhedron_3::SHalfedge`
\sa `CGAL::Nef_polyhedron_3::SHalfloop`
*/
@ -463,8 +463,8 @@ public:
There is no need for a user to create a `SFace` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed sfaces internally.
\sa `CGAL::Nef_polyhedron_3<Traits>::Vertex`
\sa `CGAL::Nef_polyhedron_3<Traits>::Volume`
\sa `CGAL::Nef_polyhedron_3::Vertex`
\sa `CGAL::Nef_polyhedron_3::Volume`
*/
@ -581,10 +581,10 @@ public:
There is no need for a user to create a `SHalfedge` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed shalfedges internally.
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::Halffacet`
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace`
\sa `CGAL::Nef_polyhedron_S2<Traits>::Sphere_circle`
\sa `CGAL::Nef_polyhedron_3::Halfedge`
\sa `CGAL::Nef_polyhedron_3::Halffacet`
\sa `CGAL::Nef_polyhedron_3::SFace`
\sa `CGAL::Nef_polyhedron_S2::Sphere_circle`
*/
@ -748,9 +748,9 @@ public:
There is no need for a user to create a `SHalfloop` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed shalfloops internally.
\sa `CGAL::Nef_polyhedron_3<Traits>::Halffacet`
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace`
\sa `CGAL::Nef_polyhedron_S2<Traits>::Sphere_point`
\sa `CGAL::Nef_polyhedron_3::Halffacet`
\sa `CGAL::Nef_polyhedron_3::SFace`
\sa `CGAL::Nef_polyhedron_S2::Sphere_point`
*/
@ -887,7 +887,7 @@ public:
There is no need for a user to create a `Volume` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed volumes internally.
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace`
\sa `CGAL::Nef_polyhedron_3::SFace`
*/

View File

@ -914,7 +914,8 @@ triangulation. If the periodic triangulation is not computed in the
the geometric primitives in the original domain. This can be
controlled using the enum `Iterator_type`.
<img border=0 src="./it_STORED_small.jpg" align=middle alt="STORED">
\anchor P3Triangulation3figgeom_iterators
<img border=0 src="./it_STORED_small.jpg" align=middle alt="STORED">
<img border=0 src="./it_STORED_COVER_DOMAIN_small.jpg" align=middle alt="STORED_COVER_DOMAIN">
<img border=0 src="./it_UNIQUE_small.jpg" align=middle alt="UNIQUE">
<img border=0 src="./it_UNIQUE_COVER_DOMAIN_small.jpg" align=middle alt="UNIQUE_COVER_DOMAIN">

View File

@ -358,7 +358,7 @@ exact.
## Periodic Alpha Shapes ##
It is possible to use `Periodic_3_Delaunay_triangulation_3`
as underlying triangulation for computing alpha shapes (cf. Chapter \ref I1_ChapterAlphashapes3D). For an example see
as underlying triangulation for computing alpha shapes (cf. Chapter \ref Chapter_3D_Alpha_Shapes). For an example see
Section \ref l1_SectPeriodicAS3D.
# Design and Implementation History # {#Periodic_3_triangulation_3Design}
@ -371,7 +371,7 @@ algorithms \cite cgal:ct-c3pt-09 and on the package with Monique
Teillaud.
The package follows the design of the 3D Triangulations package
(see Chapter \ref chapterTriangulation3).
(see Chapter \ref Chapter_3D_Triangulations).
*/
} /* namespace CGAL */

View File

@ -0,0 +1,8 @@
/*!
\example Periodic_3_triangulation_3/simple_example.cpp
\example Periodic_3_triangulation_3/colored_vertices.cpp
\example Periodic_3_triangulation_3/periodic_adding_handles.cpp
\example Periodic_3_triangulation_3/covering.cpp
\example Periodic_3_triangulation_3/large_point_set.cpp
\example Periodic_3_triangulation_3/geometric_access.cpp
/h*/

View File

@ -12,8 +12,11 @@ geometric traits classes used by the point set and by the Delaunay triangulation
and for the triangulation data structure (Tds).
*/
template< typename Gt, typename Tds >
class Point_set_2 {
template< typename Gt,
typename Tds = Triangulation_data_structure_2<
Triangulation_vertex_base_2<Gt> >
>
class Point_set_2 : public Delaunay_triangulation_2<Gt,Tds> {
public:
/// \name Types
@ -47,22 +50,22 @@ typedef Hidden_type Triangulation;
/*!
the size type of the underlying triangulation.
*/
typedef Hidden_type Triangulation::size_type;
typedef Triangulation::size_type size_type;
/*!
the vertex type of the underlying triangulation.
*/
typedef Hidden_type Triangulation::Vertex;
typedef Triangulation::Vertex Vertex;
/*!
the edge type of the underlying triangulation.
*/
typedef Hidden_type Triangulation::Edge;
typedef Triangulation::Edge Edge;
/*!
handles to vertices.
*/
typedef Hidden_type Triangulation::Vertex_handle ;
typedef Triangulation::Vertex_handle Vertex_handle;
/// @}

View File

@ -44,7 +44,7 @@ write_xyz_points(std::ostream& stream, ForwardIterator first, ForwardIterator be
\returns `true` on success.
\pram stream output stream.
\param stream output stream.
\param first iterator range over the input points.
\param point_pmap property map `ForwardIterator` -> `Point_3`.
\param normal_pmap property map `ForwardIterator` -> `Vector_3`.

View File

@ -8,7 +8,6 @@ namespace CGAL {
The output of the normal estimation algorithm highly depends on the `k` parameter.
The number of neighbors controls the size of the point subset considered for plane fitting at each input point. As this parameter is application-specific we do not provide any default value. For noise-free point sets this value can be set to a small number, e.g., 18. Larger values (e.g., 30 or more) lead to smoother normal fields and are more time consuming. We thus recommend using them only for noisy data sets.
\pre k \f$ >\f$= 2.
\tparam InputIterator iterator over input points.

View File

@ -34,9 +34,8 @@ points or points with normals (alignment is not yet covered in \cgal);
points; 4) Smoothing to reduce noise in the input data; 5) Normal
estimation and orientation when the normals are not already provided
by the acquisition device; and 6) Surface reconstruction. Chapter
`Surface_reconstruction_points_3` \ref
chapsurface_reconstruction_points_3 deals with surface reconstruction
from point sets with normal attributes.
\ref Chapter_Surface_Reconstruction_from_Point_Sets "Surface Reconstruction from Point Sets"
deals with surface reconstruction from point sets with normal attributes.
\anchor Point_set_processing_3figpipeline
\image html pipeline.jpg "Point set processing pipeline for surface reconstruction. The algorithms listed in gray are available from other CGAL components (bounding volumes and principal component analysis)."
@ -187,8 +186,8 @@ faster than `CGAL::jet_estimate_normals()`.
Function `CGAL::mst_orient_normals()` orients the normals of a set of
points with unoriented normals using the method described by Hoppe et
al. in <I>Surface reconstruction from unorganized points</I> \cite
cgal:hddms-srup-92. More specifically, this method constructs a
al. in <I>Surface reconstruction from unorganized points</I> \cite cgal:hddms-srup-92.
More specifically, this method constructs a
Riemannian graph over the input points (the graph of the `k`
nearest neighbor points) and propagates a seed normal orientation
within a minimum spanning tree computed over this graph. The result is

View File

@ -0,0 +1,8 @@
/*!
\example Point_set_processing_3/read_write_xyz_point_set_example.cpp
\example Point_set_processing_3/average_spacing_example.cpp
\example Point_set_processing_3/remove_outliers_example.cpp
\example Point_set_processing_3/grid_simplification_example.cpp
\example Point_set_processing_3/jet_smoothing_example.cpp
\example Point_set_processing_3/normals_example.cpp
*/

View File

@ -25,8 +25,15 @@ Property maps in the Boost manuals: <A HREF="http://www.boost.org/libs/property_
Some algorithms in \cgal take as input parameters iterator ranges and property maps to access information attached to elements of the sequence.
For example, the algorithms of chapters `Point_set_processing_3` \ref chappoint_set_processing_3 and `Surface_reconstruction_points_3` \ref chapsurface_reconstruction_points_3 take as input parameters iterator ranges and property maps to access each point's position and normal.
Position and normal might be represented in various ways, e.g., as a class derived from the \cgal point class, or as a `std::pair<Point_3<K>, Vector_3<K> >`, or as a `boost::tuple<..,Point_3<K>, ..., Vector_3<K> >`.
For example, the algorithms of chapters \ref
Chapter_Point_Set_Processing "Point Set Processing" \ref
chappoint_set_processing_3 and
\ref Chapter_Surface_Reconstruction_from_Point_Sets "Surface Reconstruction from Point Sets"
take as input parameters iterator ranges and property
maps to access each point's position and normal. Position and normal
might be represented in various ways, e.g., as a class derived from
the \cgal point class, or as a `std::pair<Point_3<K>, Vector_3<K> >`,
or as a `boost::tuple<..,Point_3<K>, ..., Vector_3<K> >`.
This component provides property maps to support these cases:
@ -39,17 +46,17 @@ This component provides property maps to support these cases:
## Example with %Dereference_property_map ##
The following example reads a point set and removes 5% of the points. It uses `CGAL::Dereference_property_map<Point_3>` as position property map.
\cgalexample{Property_map/remove_outliers_example.cpp}
\cgalexample{Point_set_processing_3/remove_outliers_example.cpp}
## Example with Pairs ##
The following example reads a point set from an input file and writes it to a file, both in the xyz format. Position and normal are stored in pairs and accessed through property maps.
\cgalexample{Property_map/read_write_xyz_point_set_example.cpp}
\cgalexample{Point_set_processing_3/read_write_xyz_point_set_example.cpp}
## Example with Tuples ##
The following example reads a point set in the `xyz` format and computes the average spacing. Index, position and color are stored in a tuple and accessed through property maps.
\cgalexample{Property_map/average_spacing_example.cpp}
\cgalexample{Point_set_processing_3/average_spacing_example.cpp}
*/
} /* namespace CGAL */

View File

@ -1,6 +1,6 @@
/*!
\example Property_map/remove_outliers_example.cpp
\example Property_map/read_write_xyz_point_set_example.cpp
\example Property_map/average_spacing_example.cpp
\example Property_map/property_map.cpp
\example Point_set_processing_3/remove_outliers_example.cpp
\example Point_set_processing_3/read_write_xyz_point_set_example.cpp
\example Point_set_processing_3/average_spacing_example.cpp
\example Point_set_processing_3/property_map.cpp
*/

View File

@ -339,7 +339,7 @@ in the distribution under <TT>examples/Polyhedron_IO/</TT> and
<TT>demo/Polyhedron_IO/</TT>. We show an example converting OFF input
into VRML 1.0 output.
\cgalexample{Polyhedron/polyhedron2vrml.cpp}
\cgalexample{Polyhedron_IO/polyhedron2vrml.cpp}
# Extending Vertices, Halfedges, and Facets # {#PolyhedronExtending}

View File

@ -1,5 +1,5 @@
/*!
\example Polyhedron/polyhedron2vrml.cpp
\example Polyhedron_IO/polyhedron2vrml.cpp
\example Polyhedron/polyhedron_prog_color.cpp
\example Polyhedron/polyhedron_prog_cube.cpp
\example Polyhedron/polyhedron_prog_incr_builder.cpp

View File

@ -6,7 +6,7 @@ namespace CGAL {
For a given `Polynomial_d` the function `canonicalize` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Canonicalize`.
Adapts `Polynomial_traits_d::Canonicalize`.
For more details see the concept `PolynomialTraits_d::Canonicalize`.
@ -28,7 +28,7 @@ canonicalize(const Polynomial_d& p);
For a given `Polynomial_d` the function `compare` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Compare`.
Adapts `Polynomial_traits_d::Compare`.
For more details see the concept `PolynomialTraits_d::Compare`.
@ -47,7 +47,7 @@ compare(const Polynomial_d& p, const Polynomial_d& q);
For a given `Polynomial_d` the function `degree` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Degree`.
Adapts `Polynomial_traits_d::Degree`.
For more details see the concept `PolynomialTraits_d::Degree`.
@ -70,7 +70,7 @@ index = Polynomial_traits_d<Polynomial_d>::d-1);
For a given `Polynomial_d` the function `degree_vector` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::DegreeVector`.
Adapts `Polynomial_traits_d::DegreeVector`.
For more details see the concept `PolynomialTraits_d::DegreeVector`.
@ -92,7 +92,7 @@ degree_vector(const Polynomial_d& p);
For a given `Polynomial_d` the function `differentiate` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Differentiate`.
Adapts `Polynomial_traits_d::Differentiate`.
For more details see the concept `PolynomialTraits_d::Differentiate`.
@ -115,7 +115,7 @@ index = Polynomial_traits_d<Polynomial_d>::d-1 );
For a given `Polynomial_d` the function `evaluate_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Evaluate_homogeneous`.
Adapts `Polynomial_traits_d::Evaluate_homogeneous`.
For more details see the concept `PolynomialTraits_d::EvaluateHomogeneous`.
@ -140,7 +140,7 @@ Polynomial_traits_d<Polynomial_d>::Coefficient_type v);
For a given `Polynomial_d` the function `evaluate` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Evaluate`.
Adapts `Polynomial_traits_d::Evaluate`.
For more details see the concept `PolynomialTraits_d::Evaluate`.
@ -163,7 +163,7 @@ Polynomial_traits_d<Polynomial_d>::Coefficient_type x);
For a given `Polynomial_d` the function `gcd_up_to_constant_factor` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Gcd_up_to_constant_factor`.
Adapts `Polynomial_traits_d::Gcd_up_to_constant_factor`.
For more details see the concept `PolynomialTraits_d::GcdUpToConstantFactor`.
@ -185,7 +185,7 @@ gcd_up_to_constant_factor(const Polynomial_d& p, const Polynomial_d& q);
For a given `Polynomial_d` the function `get_coefficient` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::GetCoefficient`.
Adapts `Polynomial_traits_d::GetCoefficient`.
For more details see the concept `PolynomialTraits_d::GetCoefficient`.
@ -208,7 +208,7 @@ get_coefficient(const Polynomial_d& p, int i);
For a given `Polynomial_d` the function `get_innermost_coefficient` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::GetInnermostCoefficient`.
Adapts `Polynomial_traits_d::GetInnermostCoefficient`.
For more details see the concept `PolynomialTraits_d::GetInnermostCoefficient`.
@ -231,7 +231,7 @@ get_innermost_coefficient(const Polynomial_d& p, Exponent_vector ev);
For a given `Polynomial_d` the function `innermost_leading_coefficient` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::InnermostLeadingCoefficient`.
Adapts `Polynomial_traits_d::InnermostLeadingCoefficient`.
For more details see the concept
`PolynomialTraits_d::InnermostLeadingCoefficient`.
@ -254,7 +254,7 @@ innermost_leading_coefficient(const Polynomial_d& p);
For a given `Polynomial_d` the function `integral_division_up_to_constant_factor` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Integral_division_up_to_constant_factor`.
Adapts `Polynomial_traits_d::Integral_division_up_to_constant_factor`.
For more details see the concept `PolynomialTraits_d::IntegralDivisionUpToConstantFactor`.
@ -276,7 +276,7 @@ integral_division_up_to_constant_factor(const Polynomial_d& p, const Polynomial_
For a given `Polynomial_d` the function `invert` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Invert`.
Adapts `Polynomial_traits_d::Invert`.
For more details see the concept `PolynomialTraits_d::Invert`.
@ -298,7 +298,7 @@ invert(const Polynomial_d& p, int index = Polynomial_traits_d<Polynomial_d>::d-1
For a given `Polynomial_d` the function `is_square_free` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Is_square_free`.
Adapts `Polynomial_traits_d::Is_square_free`.
For more details see the concept `PolynomialTraits_d::IsSquareFree`.
@ -320,7 +320,7 @@ is_square_free(const Polynomial_d& p);
For a given `Polynomial_d` the function `is_zero_at_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Is_zero_at_homogeneous`.
Adapts `Polynomial_traits_d::Is_zero_at_homogeneous`.
For more details see the concept `PolynomialTraits_d::IsZeroAtHomogeneous`.
@ -343,7 +343,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
For a given `Polynomial_d` the function `is_zero_at` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Is_zero_at`.
Adapts `Polynomial_traits_d::Is_zero_at`.
For more details see the concept `PolynomialTraits_d::IsZeroAt`.
@ -366,7 +366,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
For a given `Polynomial_d` the function `leading_coefficient` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Leading_coefficient`.
Adapts `Polynomial_traits_d::Leading_coefficient`.
For more details see the concept `PolynomialTraits_d::LeadingCoefficient`.
@ -388,7 +388,7 @@ leading_coefficient(const Polynomial_d& p);
For a given `Polynomial_d` the function `make_square_free` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Make_square_free`.
Adapts `Polynomial_traits_d::Make_square_free`.
For more details see the concept `PolynomialTraits_d::MakeSquareFree`.
@ -410,7 +410,7 @@ make_square_free(const Polynomial_d& p);
For a given `Polynomial_d` the function `move` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Move`.
Adapts `Polynomial_traits_d::Move`.
For more details see the concept `PolynomialTraits_d::Move`.
@ -432,7 +432,7 @@ move(const Polynomial_d& p, int i, int j);
For a given `Polynomial_d` the function `multivariate_content` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Multivariate_content`.
Adapts `Polynomial_traits_d::Multivariate_content`.
For more details see the concept `PolynomialTraits_d::MultivariateContent`.
@ -454,7 +454,7 @@ multivariate_content(const Polynomial_d& p);
For a given `Polynomial_d` the function `negate` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Negate`.
Adapts `Polynomial_traits_d::Negate`.
For more details see the concept `PolynomialTraits_d::Negate`.
@ -498,20 +498,13 @@ where \f$ s\f$ is the number of subsequences of \f$ I\f$ of the form
\advanced with \f$ a\neq 0,b\neq 0, k\geq 0\f$.
\advanced For the \f$ i\f$-th subsequence of \f$ I\f$, define
\f$ \f$\epsilon_i:=<TD class="math">
<TABLE CELLSPACING=5 >
<TR>
<TD ALIGN=CENTER NOWRAP>
0
<TD ALIGN=CENTER NOWRAP>
<span class="mbox">if \f$ k\f$ is odd</span>,
<TR>
<TD ALIGN=CENTER NOWRAP>
(-1)^k/2 mathrm sign(ab)
<TD ALIGN=CENTER NOWRAP>
<span class="mbox">if \f$ k\f$ is even</span>.
</TABLE>
<TD nowrap="nowrap" class="math">\f$ \f$
\f[
\epsilon_i:=\begin{array}{cc}
0 & \mbox{if $k$ is odd},\\
(-1)^{k/2}\mathrm{sign}(ab) & \mbox{if $k$ is even}.
\end{array}
\f]
\advanced For \f$ f\in\mathbb{R}[x]\f$ with \f$ \deg f=n\f$, we have:
\f[ C(\mathrm{stha}_n(f),\ldots,\mathrm{stha}_0(f)) = \#\{\alpha\in\R\mid f(\alpha)=0\} \f]
@ -554,20 +547,13 @@ where \f$ s\f$ is the number of subsequences of \f$ I\f$ of the form
\advanced with \f$ a\neq 0,b\neq 0, k\geq 0\f$.
\advanced For the \f$ i\f$-th subsequence of \f$ I\f$, define
\f$ \f$\epsilon_i:=<TD class="math">
<TABLE CELLSPACING=5 >
<TR>
<TD ALIGN=CENTER NOWRAP>
0
<TD ALIGN=CENTER NOWRAP>
<span class="mbox">if \f$ k\f$ is odd</span>,
<TR>
<TD ALIGN=CENTER NOWRAP>
(-1)^k/2 mathrm sign(ab)
<TD ALIGN=CENTER NOWRAP>
<span class="mbox">if \f$ k\f$ is even</span>.
</TABLE>
<TD nowrap="nowrap" class="math">\f$ \f$
\f[
\epsilon_i:=\begin{array}{cc}
0 & \mbox{if $k$ is odd},\\
(-1)^{k/2}\mathrm{sign}(ab) & \mbox{if $k$ is even}.
\end{array}
\f]
\advanced For \f$ f\in\mathbb{R}[x]\f$ with \f$ \deg f=n\f$, we have:
\f[ C(\mathrm{stha}_n(f),\ldots,\mathrm{stha}_0(f)) = \#\{\alpha\in\R\mid f(\alpha)=0\} \f]
@ -588,7 +574,7 @@ int number_of_real_roots(InputIterator start,InputIterator end);
For a given `Polynomial_d` the function `permute` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Permute`.
Adapts `Polynomial_traits_d::Permute`.
For more details see the concept `PolynomialTraits_d::Permute`.
@ -664,7 +650,7 @@ OutputIterator3 coQ_out);
computes the principal Sturm-Habicht coefficients of \f$ f\f$
with respect to the outermost variable. Each element is of type
`Polynomial_traits_d<Polynomial_d>::Coefficient_type`.
`Polynomial_traits_d::Coefficient_type`b.
For a given `Polynomial_d` the function `principal_sturm_habicht_sequence` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
@ -689,7 +675,7 @@ OutputIterator out);
computes the principal subresultants of \f$ p\f$ and \f$ q\f$,
with respect to the outermost variable. Each element is of type
`Polynomial_traits_d<Polynomial_d>::Coefficient_type`.
`Polynomial_traits_d::Coefficient_type`.
For a given `Polynomial_d` the function `principal_subresultants` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
@ -715,7 +701,7 @@ OutputIterator out);
For a given `Polynomial_d` the function `pseudo_division` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Pseudo_division`.
Adapts `Polynomial_traits_d::Pseudo_division`.
For more details see the concept `PolynomialTraits_d::PseudoDivision`.
@ -737,7 +723,7 @@ Polynomial_d& q, Polynomial_d& r, Polynomial_traits_d<Polynomial_d>::Coefficient
For a given `Polynomial_d` the function `pseudo_division_quotient` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Pseudo_division_quotient`.
Adapts `Polynomial_traits_d::Pseudo_division_quotient`.
For more details see the concept `PolynomialTraits_d::PseudoDivisionQuotient`.
@ -760,7 +746,7 @@ pseudo_division_quotient(const Polynomial_d& p, const Polynomial_d& q);
For a given `Polynomial_d` the function `pseudo_division_remainder` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Pseudo_division_remainder`.
Adapts `Polynomial_traits_d::Pseudo_division_remainder`.
For more details see the concept `PolynomialTraits_d::PseudoDivisionRemainder`.
@ -781,7 +767,7 @@ pseudo_division_remainder(const Polynomial_d& p, const Polynomial_d& q);
For a given `Polynomial_d` the function `resultant` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Resultant`.
Adapts `Polynomial_traits_d::Resultant`.
For more details see the concept `PolynomialTraits_d::Resultant`.
@ -802,7 +788,7 @@ resultant(const Polynomial_d& p, const Polynomial_d& q);
For a given `Polynomial_d` the function `scale_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Scale_homogeneous`.
Adapts `Polynomial_traits_d::Scale_homogeneous`.
For more details see the concept `PolynomialTraits_d::ScaleHomogeneous`.
@ -827,7 +813,7 @@ int index = Polynomial_traits_d<Polynomial_d>::d-1);
For a given `Polynomial_d` the function `scale` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Scale`.
Adapts `Polynomial_traits_d::Scale`.
For more details see the concept `PolynomialTraits_d::Scale`.
@ -851,7 +837,7 @@ int index = Polynomial_traits_d<Polynomial_d>::d-1);
For a given `Polynomial_d` the function `shift` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Shift`.
Adapts `Polynomial_traits_d::Shift`.
For more details see the concept `PolynomialTraits_d::Shift`.
@ -871,7 +857,7 @@ shift(const Polynomial_d& p, int i, int index = Polynomial_traits_d<Polynomial_d
For a given `Polynomial_d` the function `sign_at_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Sign_at_homogeneous`.
Adapts `Polynomial_traits_d::Sign_at_homogeneous`.
For more details see the concept `PolynomialTraits_d::SignAtHomogeneous`.
@ -894,7 +880,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
For a given `Polynomial_d` the function `sign_at` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Sign_at`.
Adapts `Polynomial_traits_d::Sign_at`.
For more details see the concept `PolynomialTraits_d::SignAt`.
@ -917,7 +903,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
For a given `Polynomial_d` the function `square_free_factorize` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Square_free_factorize`.
Adapts `Polynomial_traits_d::Square_free_factorize`.
For more details see the concept `PolynomialTraits_d::SquareFreeFactorize`.
@ -941,7 +927,7 @@ Polynomial_traits_d<Polynomial>::Innermost_coefficient& a);
For a given `Polynomial_d` the function `square_free_factorize` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Square_free_factorize`.
Adapts `Polynomial_traits_d::Square_free_factorize`.
For more details see the concept `PolynomialTraits_d::SquareFreeFactorize`.
@ -963,7 +949,7 @@ square_free_factorize(const Polynomial_d& p, OutputIterator it);
For a given `Polynomial_d` the function `square_free_factorize_up_to_constant_factor` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Square_free_factorize_up_to_constant_factor`.
Adapts `Polynomial_traits_d::Square_free_factorize_up_to_constant_factor`.
For more details see the concept `PolynomialTraits_d::SquareFreeFactorizeUpToConstantFactor`.
@ -1039,7 +1025,7 @@ OutputIterator3 cofx_out);
For a given `Polynomial_d` the function `substitute_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Substitute_homogeneous`.
Adapts `Polynomial_traits_d::Substitute_homogeneous`.
For more details see the concept `PolynomialTraits_d::SubstituteHomogeneous`.
@ -1064,7 +1050,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
For a given `Polynomial_d` the function `substitute` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Substitute`.
Adapts `Polynomial_traits_d::Substitute`.
For more details see the concept `PolynomialTraits_d::Substitute`.
@ -1090,7 +1076,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
For a given `Polynomial_d` the function `swap` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Swap`.
Adapts `Polynomial_traits_d::Swap`.
For more details see the concept `PolynomialTraits_d::Swap`.
@ -1112,7 +1098,7 @@ swap(const Polynomial_d& p, int i, int j);
For a given `Polynomial_d` the function `total_degree` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Total_degree`.
Adapts `Polynomial_traits_d::Total_degree`.
For more details see the concept `PolynomialTraits_d::TotalDegree`.
@ -1134,7 +1120,7 @@ total_degree(const Polynomial_d& p);
For a given `Polynomial_d` the function `translate_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Translate_homogeneous`.
Adapts `Polynomial_traits_d::Translate_homogeneous`.
For more details see the concept `PolynomialTraits_d::TranslateHomogeneous`.
@ -1160,7 +1146,7 @@ int index = Polynomial_traits_d<Polynomial_d>::d-1);
For a given `Polynomial_d` the function `translate` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Translate`.
Adapts `Polynomial_traits_d::Translate`.
For more details see the concept `PolynomialTraits_d::Translate`.
@ -1185,7 +1171,7 @@ int index = Polynomial_traits_d<Polynomial_d>::d-1);
For a given `Polynomial_d` the function `univariate_content` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::UnivariateContent`.
Adapts `Polynomial_traits_d::UnivariateContent`.
For more details see the concept `PolynomialTraits_d::UnivariateContent`.
@ -1207,7 +1193,7 @@ univariate_content(const Polynomial_d& p);
For a given `Polynomial_d` the function `univariate_content_up_to_constant_factor` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`.
Adapts `Polynomial_traits_d<Polynomial_d>::Univariate_content_up_to_constant_factor`.
Adapts `Polynomial_traits_d::Univariate_content_up_to_constant_factor`.
For more details see the concept `PolynomialTraits_d::UnivariateContentUpToConstantFactor`.

View File

@ -22,7 +22,7 @@ Hence, it can not be provided as a public type in advance.
\sa \ref ::Polynomial_d
\sa \ref ::PolynomialTraits_d
\sa \ref ::PolynomialTraits_d::SubstituteHomogeneous
\sa \ref ::CoercionTraits
\sa \ref CGAL::Coercion_traits
*/

View File

@ -28,7 +28,7 @@ Hence, it can not be provided as a public type in advance.
\sa \ref ::Polynomial_d
\sa \ref ::PolynomialTraits_d
\sa \ref ::PolynomialTraits_d::Substitute
\sa \ref ::CoercionTraits
\sa \ref CGAL::Coercion_traits
*/

View File

@ -14,11 +14,9 @@ all functionality related to polynomials is provided by the traits.
\refines ::IntegralDomainWithoutDivision
The algebraic structure of ::Polynomial_d depends on the
The algebraic structure of ::Polynomial_d depends on the
algebraic structure of ::Innermost_coefficient_type:
Innermost_coefficient_type | %Polynomial_d
---------------------------------|--------------------------------
::IntegralDomainWithoutDivision | ::IntegralDomainWithoutDivision
@ -39,9 +37,6 @@ coefficient is a Field the polynomial is model of EuclideanRing.
*/
class Polynomial_d {
public:
/// @}
}; /* end Polynomial_d */

View File

@ -98,10 +98,8 @@ the polynomial as an element of \f$ R [x_0,\dots,x_{d-1}]\f$.
According to these two different views the traits class is required to provide
two different coefficient types:
<UL>
<LI>`CGAL::Polynomial_traits_d<Polynomial_d>::Coefficient_type`
representing \f$ R[x_0,\dots,x_{d-2}]\f$.
<LI>`CGAL::Polynomial_traits_d<Polynomial_d>::Innermost_coefficient_type`
representing the base ring \f$ R\f$.
<LI>`CGAL::Polynomial_traits_d::Coefficient_type` representing \f$ R[x_0,\dots,x_{d-2}]\f$.
<LI>`CGAL::Polynomial_traits_d::Innermost_coefficient_type` representing the base ring \f$ R\f$.
</UL>
Another important type which is introduced by this package is
@ -123,15 +121,15 @@ refines `IntegralDomainWithoutDivision` which in turn refines
constant polynomials.
In general a polynomial is constructed using the functor
`CGAL::Polynomial_traits_d<Polynomial_d>::Construct_polynomial` a model of
`CGAL::Polynomial_traits_d::Construct_polynomial` a model of
`PolynomialTraits_d::ConstructPolynomial`. Basically there are two options:
<UL>
<LI>The polynomial is constructed from an iterator range with value type
`CGAL::Polynomial_traits_d<Polynomial_d>::Coefficient_type`,
`CGAL::Polynomial_traits_d::Coefficient_type`,
where the \f$ begin\f$ iterator refers to the constant term
(constant with respect to the outermost variable).
<LI>The polynomial is constructed from an iterator range with value type
`std::pair< CGAL::Exponent_vector, CGAL::Polynomial_traits_d<Polynomial_d>::Innermost_coefficient_type>`,
`std::pair< CGAL::Exponent_vector, CGAL::Polynomial_traits_d::Innermost_coefficient_type>`,
where each pair defines the coefficient for the monomial defined by
the exponent vector.
</UL>
@ -140,7 +138,7 @@ However, in some cases it might be more convenient to just construct
the polynomials representing the different variables and to obtain the
final polynomial using
algebraic expressions. The most elegant way to construct a certain variable is
`CGAL::Polynomial_traits_d<Polynomial_d>::Shift` being a model of
`CGAL::Polynomial_traits_d::Shift` being a model of
`PolynomialTraits_d::Shift`.
## Example ##

View File

@ -0,0 +1,9 @@
/*!
\example Polynomial/construction.cpp
\example Polynomial/coefficient_access.cpp
\example Polynomial/degree.cpp
\example Polynomial/swap_move.cpp
\example Polynomial/gcd_up_to_constant_factor.cpp
\example Polynomial/substitute.cpp
\example Polynomial/subresultants.cpp
*/

View File

@ -20,7 +20,7 @@ Output operators are defined for all entry types of `lp`.
Example
--------------
\ref print_first_lp.cpp
\ref QP_solver/print_first_lp.cpp
\sa The concept `LinearProgram`
@ -48,7 +48,7 @@ Output operators are defined for all entry types of `lp`.
Example
--------------
\ref print_first_nonnegative_lp.cpp
\ref QP_solver/print_first_nonnegative_lp.cpp
\sa The concept `NonnegativeLinearProgram`
@ -76,7 +76,7 @@ Output operators are defined for all entry types of `qp`.
Example
--------------
\ref print_first_nonnegative_qp.cpp
\ref QP_solver/print_first_nonnegative_qp.cpp
\sa The concept `NonnegativeQuadraticProgram`
@ -103,7 +103,7 @@ Output operators are defined for all entry types of `qp`.
Example
--------------
\ref print_first_qp.cpp
\ref QP_solver/print_first_qp.cpp
\sa The concept `QuadraticProgram`
*/
@ -147,7 +147,7 @@ with exact number type `ET`.
Example
--------------
\ref first_lp.cpp
\ref QP_solver/first_lp.cpp
\models `Quadratic_program<NT>`
\models `Quadratic_program_from_mps<NT>`
@ -194,9 +194,9 @@ with exact number type `ET`.
Example
--------------
\ref first_nonnegative_lp.cpp
\ref QP_solver/first_nonnegative_lp.cpp
The models of \ref NonnegativeLinearProgram:
The models of \ref NonnegativeLinearProgram\:
\sa `Quadratic_program<NT>`
\sa `Quadratic_program_from_mps<NT>`
\sa `Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
@ -242,9 +242,9 @@ with exact number type `ET`.
Example
--------------
\ref first_nonnegative_qp.cpp
\ref QP_solver/first_nonnegative_qp.cpp
The models of \ref ::NonnegativeQuadraticProgram:
The models of \ref ::NonnegativeQuadraticProgram\:
\sa `Quadratic_program<NT>`
\sa `Quadratic_program_from_mps<NT>`
\sa `Nonnegative_quadratic_program_from_iterators<A_it, B_it, R_it, D_it, C_it>`
@ -289,9 +289,9 @@ with exact number type `ET`.
Example
--------------
\ref first_qp.cpp
\ref QP_solver/first_qp.cpp
The models of \ref ::QuadraticProgram:
The models of \ref QuadraticProgram\:
\sa `Quadratic_program<NT>`
\sa `Quadratic_program_from_mps<NT>`
\sa `Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>`

View File

@ -60,16 +60,16 @@ namespace CGAL {
Example
--------------
\ref first_lp_from_iterators.cpp
\ref QP_solver/first_lp_from_iterators.cpp
The following example for the simpler model
`Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
should give you a flavor of the use of this
model in practice.
\ref solve_convex_hull_containment_lp.h
\ref QP_solver/solve_convex_hull_containment_lp.h
\ref convex_hull_containment.cpp
\ref QP_solver/convex_hull_containment.cpp
\sa `LinearProgram`
\sa `Quadratic_program<NT>`
@ -119,9 +119,9 @@ public:
The following example demonstrates the typical usage of makers
with the simpler function `make_nonnegative_linear_program_from_iterators`.
\ref solve_convex_hull_containment_lp2.h
\ref QP_solver/solve_convex_hull_containment_lp2.h
\ref convex_hull_containment2.cpp
\ref QP_solver/convex_hull_containment2.cpp
\sa `Linear_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, C_it>`
*/
@ -163,9 +163,9 @@ make_linear_program_from_iterators (
Example
--------------
\ref solve_convex_hull_containment_lp2.h
\ref QP_solver/solve_convex_hull_containment_lp2.h
\ref convex_hull_containment2.cpp
\ref QP_solver/convex_hull_containment2.cpp
\sa `Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
*/
@ -204,9 +204,9 @@ make_nonnegative_linear_program_from_iterators (
The following example demonstrates the typical usage of makers
with the simpler function `make_nonnegative_linear_program_from_iterators`.
\ref solve_convex_hull_containment_lp2.h
\ref QP_solver/solve_convex_hull_containment_lp2.h
\ref convex_hull_containment2.cpp
\ref QP_solver/convex_hull_containment2.cpp
\sa `Nonnegative_quadratic_program_from_iterators<A_it, B_it, R_it, D_it, C_it>`
@ -246,9 +246,9 @@ make_nonnegative_quadratic_program_from_iterators (
The following example demonstrates the typical usage of makers
with the simpler function `make_nonnegative_linear_program_from_iterators`.
\ref solve_convex_hull_containment_lp2.h
\ref QP_solver/solve_convex_hull_containment_lp2.h
\ref convex_hull_containment2.cpp
\ref QP_solver/convex_hull_containment2.cpp
\sa `Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>`
*/
@ -321,11 +321,11 @@ make_quadratic_program_from_iterators (
Example
--------------
\ref first_nonnegative_lp_from_iterators.cpp
\ref QP_solver/first_nonnegative_lp_from_iterators.cpp
\ref solve_convex_hull_containment_lp.h
\ref QP_solver/solve_convex_hull_containment_lp.h
\ref convex_hull_containment.cpp
\ref QP_solver/convex_hull_containment.cpp
\sa `NonnegativeLinearProgram`
\sa `Quadratic_program<NT>`
@ -402,16 +402,16 @@ public:
Example
--------------
\ref first_nonnegative_qp_from_iterators.cpp
\ref QP_solver/first_nonnegative_qp_from_iterators.cpp
The following example for the simpler model
`Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
should give you a flavor of the use of this
model in practice.
\ref solve_convex_hull_containment_lp.h
\ref QP_solver/solve_convex_hull_containment_lp.h
\ref convex_hull_containment.cpp
\ref QP_solver/convex_hull_containment.cpp
\sa `NonnegativeQuadraticProgram`
\sa `Quadratic_program<NT>`
@ -491,16 +491,16 @@ public:
Example
--------------
\ref first_qp_from_iterators.cpp
\ref QP_solver/first_qp_from_iterators.cpp
The following example for the simpler model
`Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
should give you a flavor of the use of this
model in practice.
\ref solve_convex_hull_containment_lp.h
\ref QP_solver/solve_convex_hull_containment_lp.h
\ref convex_hull_containment.cpp
\ref QP_solver/convex_hull_containment.cpp
\sa `QuadraticProgram`
\sa `Quadratic_program<NT>`
@ -588,13 +588,13 @@ public:
Example
--------------
\ref first_qp_from_mps.cpp
\ref QP_solver/first_qp_from_mps.cpp
\ref first_lp_from_mps.cpp
\ref QP_solver/first_lp_from_mps.cpp
\ref first_nonnegative_qp_from_mps.cpp
\ref QP_solver/first_nonnegative_qp_from_mps.cpp
\ref first_nonnegative_lp_from_mps.cpp
\ref QP_solver/first_nonnegative_lp_from_mps.cpp
\sa `Quadratic_program<NT>`
\sa `Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>`
@ -800,15 +800,15 @@ namespace CGAL {
Example
--------------
\ref first_qp.cpp
\ref QP_solver/first_qp.cpp
\ref first_lp.cpp
\ref QP_solver/first_lp.cpp
\ref first_nonnegative_qp.cpp
\ref QP_solver/first_nonnegative_qp.cpp
\ref first_nonnegative_lp.cpp
\ref QP_solver/first_nonnegative_lp.cpp
\ref invert_matrix.cpp
\ref QP_solver/invert_matrix.cpp
\sa `Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>`
\sa `Linear_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, C_it>`

View File

@ -39,7 +39,7 @@ the four functions
Example
--------------
\ref first_qp.cpp
\ref QP_solver/first_qp.cpp
Terminology
--------------
@ -145,7 +145,7 @@ typedef Hidden_type Unboundedness_certificate_iterator;
/// functions `solve_quadratic_program`, `solve_linear_program`,
/// `solve_nonnegative_quadratic_program`, and
/// `solve_nonnegative_linear_program`.
/// <b>Example:</b> \ref first_qp.cpp
/// <b>Example:</b> \ref QP_solver/first_qp.cpp
/// @{
/*!
@ -267,7 +267,7 @@ const ET& variables_common_denominator() const;
/// 'important' variables (the ones not attaining one of their
/// bounds), and 'important' constraints (the ones being satisfied
/// with equality). The following methods grant access to them. \ref
/// important_variables.cpp \ref first_qp_basic_constraints.cpp
/// QP_solver/important_variables.cpp \ref QP_solver/first_qp_basic_constraints.cpp
/// @{
/*!
@ -334,9 +334,9 @@ std::ostream& operator<<(std::ostream& out, const Quadratic_program_solution<ET>
/// done automatically after the solution of the program, see
/// `Quadratic_program_options`. If the check fails, a logfile is
/// generated that contains the details, and an error message is
/// written to `std::cerr` (see \ref cycling.cpp for an example that
/// uses this option). \ref first_qp.cpp \ref first_lp.cpp \ref
/// first_nonnegative_qp.cpp \ref first_nonnegative_lp.cpp
/// written to `std::cerr` (see \ref QP_solver/cycling.cpp for an example that
/// uses this option). \ref QP_solver/first_qp.cpp \ref QP_solver/first_lp.cpp \ref
/// QP_solver/first_nonnegative_qp.cpp \ref QP_solver/first_nonnegative_lp.cpp
/// @{
/*!
@ -446,7 +446,7 @@ this inequality, we get
and since \f$D\f$ is positive semidefinite, we have
\f$(\qpx-\qpx^*)^TD(\qpx-\qpx^*)\geq 0\f$ and the lemma follows.
\sa \ref optimality_certificate.cpp
\sa \ref QP_solver/optimality_certificate.cpp
*/
Optimality_certificate_iterator
optimality_certifcate_begin() const;
@ -519,7 +519,7 @@ that there is a feasible solution \f$\qpx\f$. Then we get
\f]
and this is the desired contradiction \f$0>0\f$.
\sa \ref infeasibility_certificate.cpp
\sa \ref QP_solver/infeasibility_certificate.cpp
*/
Infeasibility_certificate_iterator
infeasibility_certificate_begin() const;

View File

@ -1,358 +0,0 @@
\authors Kaspar Fischer, Bernd G&auml;rtner, Sven Sch&ouml;nherr, and Frans Wessendorp
# Classified Reference Pages # {#QP_solverClassified}
HEADING:Concepts
--------------
`QuadraticProgram`
\f$ \quad\f$ (for quadratic programs with variable bounds \f$ \qpl\leq \qpx \leq \qpu\f$)
`LinearProgram`
\f$ \quad\f$(for linear programs with variable bounds \f$ \qpl\leq \qpx \leq \qpu\f$)
`NonnegativeQuadraticProgram`
\f$ \quad\f$ (for quadratic programs with variable bounds \f$ \qpx\geq 0\f$)
`NonnegativeLinearProgram`
\f$ \quad\f$ (for linear programs with variable bounds \f$ \qpx\geq 0\f$)
`MPSFormat`
\f$ \quad\f$ (the format used for reading and writing linear and quadratic
programs)
HEADING:Classes
--------------
There is a class that represents the solution of a linear
or quadratic program. An instance of this class is returned by any of
the solution functions below.
\ref ::CGAL::Quadratic_program_solution<ET>
We offer a number of predefined models for the above program concepts.
The following two are simultaneously models for all four concepts and
are probably the most convenient models; they allow you to construct
linear or quadratic programs entry by entry, or from streams in
`MPSFormat`. At any time, you can query these programs for
linearity and nonnegativity and thus select the appropriate
solution function.
\ref ::CGAL::Quadratic_program<NT>
\f$ \quad\f$ (for linear and quadratic programs that own their
data and are built entry-wise)
\ref ::CGAL::Quadratic_program_from_mps<NT>
\f$ \quad\f$ (for linear and quadratic programs read from an input stream in
`MPSFormat`; the constructed program can also be manipulate entry-wise)
Then there are specific models for any of the four program concepts above;
these are useful if you want to maintain the program data yourself, since
they simply wrap random access iterators over the program data and involve
no further copying of data.
\ref ::CGAL::Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>
\f$ \quad\f$ (for quadratic programs that wrap given iterators, without copying
data)
\ref ::CGAL::Linear_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, C_it>
\f$ \quad\f$ (for linear programs wrapping given iterators)
\ref ::CGAL::Nonnegative_quadratic_program_from_iterators<A_it, B_it, R_it, D_it, C_it>
\f$ \quad\f$ (for nonnegative quadratic programs, wrapping given iterators)
\ref ::CGAL::Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>
\f$ \quad\f$ (for nonnegative linear programs, wrapping given iterators)
HEADING:Functions
--------------
In case you want to construct a program from complicated iterators
(whose types you don't know, or simply don't want to bother with),
we provide four makers.
\ref ::CGAL::make_quadratic_program_from_iterators
\ref ::CGAL::make_linear_program_from_iterators
\ref ::CGAL::make_nonnegative_quadratic_program_from_iterators
\ref ::CGAL::make_nonnegative_linear_program_from_iterators
There are four functions to solve a program, one for each program
concept.
\ref ::CGAL::solve_quadratic_program
\ref ::CGAL::solve_linear_program
\ref ::CGAL::solve_nonnegative_quadratic_program
\ref ::CGAL::solve_nonnegative_linear_program
The solution process can customized by passing an object of the class
\ref ::Quadratic_program_options
Programs can be written to an output stream in `MPSFormat`, using
one of the following four functions.
\ref ::CGAL::print_quadratic_program
\ref ::CGAL::print_linear_program
\ref ::CGAL::print_nonnegative_quadratic_program
\ref ::CGAL::print_nonnegative_linear_program

View File

@ -346,7 +346,7 @@ model `Quadratic_program<NT>`, we can easily set the default bounds
so that a nonnegative program results, and a linear program is
obtained by simply not inserting any \f$ D\f$-entries. Even in the
iterator-based approach (see
\ref first_qp_from_iterators.cpp), linear
\ref QP_solver/first_qp_from_iterators.cpp), linear
and nonnegative programs can easily be defined through suitable
`Const_oneset_iterator<T>`-style iterators.
@ -411,11 +411,11 @@ Here is \cgal code for solving it, using the dedicated LP solver, and
according to the three ways for constructing a program that we have
already discussed in Section \ref secQPfirst.
\ref first_lp.cpp
\ref QP_solver/first_lp.cpp
\ref first_lp_from_mps.cpp
\ref QP_solver/first_lp_from_mps.cpp
\ref first_lp_from_iterators.cpp
\ref QP_solver/first_lp_from_iterators.cpp
In all cases, the output is
\verbatim
@ -459,11 +459,11 @@ variable values:
1: 3/1
\endverbatim
\ref first_nonnegative_qp.cpp
\ref QP_solver/first_nonnegative_qp.cpp
\ref first_nonnegative_qp_from_mps.cpp
\ref QP_solver/first_nonnegative_qp_from_mps.cpp
\ref first_nonnegative_qp_from_iterators.cpp
\ref QP_solver/first_nonnegative_qp_from_iterators.cpp
## The Nonnegative Linear Programming Solver ##
@ -485,11 +485,11 @@ a "minimal" input and a "shortest" program; the optimal value is
This can be solved by any of the following three programs
\ref first_nonnegative_lp.cpp
\ref QP_solver/first_nonnegative_lp.cpp
\ref first_nonnegative_lp_from_mps.cpp
\ref QP_solver/first_nonnegative_lp_from_mps.cpp
\ref first_nonnegative_lp_from_iterators.cpp
\ref QP_solver/first_nonnegative_lp_from_iterators.cpp
The output will always be
\verbatim
@ -569,7 +569,7 @@ You can avoid the explicit construction of the type
if you only need an expression of it, e.g. to pass it directly
as an argument to the solving function. Here is an alternative
version of
\ref solve_convex_hull_containment_lp.h
\ref QP_solver/solve_convex_hull_containment_lp.h
that shows how this works. In effect, you get shorter and more
readable code.
@ -609,7 +609,7 @@ such a situation is called a <I>degeneracy</I>.
There is also the concept of an important constraint: this is
typically a constraint in the system \f$ A\qpx\qprel\qpb\f$
that is satisfied with equality at \f$ \qpx^*\f$. Program
\ref first_qp_basic_constraints.cpp
\ref QP_solver/first_qp_basic_constraints.cpp
shows how these can be accessed, using the iterators
`basic_constraint_indices_begin()` and
`basic_constraint_indices_end()`.
@ -666,8 +666,8 @@ Lemma.
There are similar certificates for optimality and unboundedness
that you can see in action in the programs
\ref optimality_certificate.cpp and
\ref unboundedness_certificate.cpp.
\ref QP_solver/optimality_certificate.cpp and
\ref QP_solver/unboundedness_certificate.cpp.
The underlying variants of Farkas Lemma are somewhat more
complicated, due to the mixed relations in \f$ \qprel\f$ and the general
bounds. The certificate section of `Quadratic_program_solution<ET>`
@ -701,7 +701,7 @@ magnitude, the filtering will usually have
no dramatic effect on the performance, so in that case you might as well
switch to `CGAL::QP_PARTIAL_DANTZIG`
to be safe from the issue described here (see
\ref cycling.cpp
\ref QP_solver/cycling.cpp
for an example that shows how to change the pricing strategy).
\subsection secQPcustomizationcycling The Solver Internally Cycles

View File

@ -18,7 +18,7 @@ uses three-valued comparisons and offers additional functionality,
generic algorithms, iterators, functor adaptors for binding and swapping
arguments and for composition, functors for projection and creation and
adaptor classes around iterators and circulators. See also circulators in
Chapter \ref chapterCirculators. A class storing polymorphic objects
Chapter \ref Chapter_Handles_Ranges_and_Circulators. A class storing polymorphic objects
is also provided, as well as a class to manage the uncertainty of some values.
Finally, tags and policy classes to specify complexity trade-offs of data-structures,
and a class which helps specifying that the default types in template
@ -157,7 +157,7 @@ for backward compatibility. Those are documented for completeness and
implementers. They are not intended to be used by users of the
library.
\section secchecks Checks
# Checks # {#secchecks}
Much of the \cgal code contains checks.
For example, all checks used in the kernel code are prefixed by

View File

@ -8,7 +8,7 @@ namespace CGAL {
\autotoc
\authors Hans Tangelder and Andreas Fabri
# Introduction # {#Spatial_searching}Introduction}
# Introduction # {#Spatial_searchingIntroduction}
The spatial searching package implements exact and approximate
distance browsing by providing implementations of algorithms

View File

@ -1,4 +1,6 @@
/*!
\example Spatial_searching/Point.h
\example Spatial_searching/Distance.h
\example Spatial_searching/circular_query.cpp
\example Spatial_searching/distance_browsing.cpp
\example Spatial_searching/fuzzy_range_query.cpp

View File

@ -0,0 +1,9 @@
/*!
\example Spatial_sorting/hilbert.cpp
\example Spatial_sorting/hilbert_policies.cpp
\example Spatial_sorting/small_example_delaunay_2.cpp
\example Spatial_sorting/myPoint.cpp
\example Spatial_sorting/sp_sort_using_property_map_2.cpp
\example Spatial_sorting/sp_sort_using_property_map_3.cpp
\example Spatial_sorting/sp_sort_using_property_map_d.cpp
*/

View File

@ -7,7 +7,11 @@ The class `Straight_skeleton_2` provides a model for the
`StraightSkeleton_2` concept which is the class
type used to represent a straight skeleton.
It inherits from `HalfedgeDS_vector<Traits,Items,Alloc>`
The only purpose of this class is to protect all the modifying
operations in a `HalfedgeDS`. Normal users should not modify a
straight skeleton. If an advanced user needs to get access to the
modifying operations, it must call the required methods through the
`Base` class.
\models ::StraightSkeleton_2
\models ::DefaultConstructible
@ -17,15 +21,11 @@ It inherits from `HalfedgeDS_vector<Traits,Items,Alloc>`
\sa `StraightSkeletonVertex_2`
\sa `StraightSkeletonHalfedge_2`
\sa `StraightSkeleton_2`
\sa The only purpose of this class is to protect all the modifying
operations in a `HalfedgeDS`. Normal users should not modify a
straight skeleton. If an advanced user needs to get access to the
modifying operations, it must call the required methods through the
`::Base` class.
*/
template< typename Traits, typename Items, typename Alloc >
class Straight_skeleton_2 {
class Straight_skeleton_2 : public HalfedgeDS_vector<Traits,Items,Alloc> {
public:
/// @}

View File

@ -39,11 +39,9 @@ The orientation of a polygon with holes is the orientation of its outer contour.
Throughout the rest of this chapter the term <I>polygon</I> will be used as a shortcut for <I>polygon with holes</I>.
\anchor Validpolygons
\image latex Straight_skeleton_2/valid_polygons "Examples of strictly simple polygons: One with no holes and two edges coincident (left) and one with 2 holes (right)."
\image html valid_polygons.png "Examples of strictly simple polygons: One with no holes and two edges coincident (left) and one with 2 holes (right)."
\anchor Invalidpolygons
\image latex Straight_skeleton_2/invalid_polygons "Examples of non-simple polygons: One folding into itself, that is, non-planar (left), one with a vertex touching an edge (right), and one with a hole crossing into the outside (bottom)"
\image html invalid_polygons.png "Examples of non-simple polygons: One folding into itself, that is, non-planar (left), one with a vertex touching an edge (middle), and one with a hole crossing into the outside (right)"
## Inward Offset of a Non-degenerate Strictly-Simple Polygon with Holes ##
@ -59,8 +57,6 @@ If the source polygon has no holes, no offset polygon has holes. If the source p
Each offset polygon has the same orientation as the source polygon.
\anchor Offsets
\image latex complex_offset "Offset contours of a sample polygon"
\image latex complex_offset.png "Offset contours of a sample polygon"
## Straight Skeleton of a 2D Non-degenerate Strictly-Simple Polygon with Holes ##
@ -69,13 +65,9 @@ The <I>2D straight skeleton</I> of a non-degenerate strictly-simple polygon with
These regions are bounded by angular bisectors of the supporting lines of the contour edges and each such region is itself a non-convex non-degenerate strictly-simple polygon.
\anchor ComplexSLS
\image latex complex_skeleton "Straight skeleton of a complex shaggy contour"
\image html complex_skeleton.png "Straight skeleton of a complex shaggy contour"
\anchor MoreSLS
\image latex simple_skeleton_0
\image latex simple_skeleton_1
\image latex validly_touching
\image html simple_skeleton_0.png "Other examples: A vertex-event (left), the case of several collinear edges (middle), and the case of a validly simple polygon with tangent edges (right)."
## Angular Bisecting Lines and Offset Bisectors ##
@ -246,7 +238,6 @@ Contour vertices have time zero.
\anchor Simplepolyoffsets
\image latex fig6 "Straight Skeleton Data Structure" width=12cm
\image html fig6.png "Straight Skeleton Data Structure" width=12cm
# API # {#Straight_skeleton_2API}
@ -425,8 +416,6 @@ If you use this function to place the outer frame you are guaranteed to obtain a
\anchor Exterior
\image latex exterior_skeleton
\image latex exterior_offset
\image html exterior_skeleton.png
\image html exterior_offset.png

View File

@ -0,0 +1,4 @@
/*!
\example Stream_lines_2/stl_regular_field.cpp
\example Stream_lines_2/stl_triangular_field.cpp
*/

View File

@ -221,7 +221,7 @@ template <class T> Output_rep<T> oformat( const T& t);
/*!
\ingroup PkgIOstreams
The definition of the function \ccc{iformat} is completely symmetric to `oformat`.
The definition of the function `iformat` is completely symmetric to `oformat`.
*/
template <class T> Input_rep<T> iformat( const T& t);

View File

@ -16,7 +16,7 @@ instantiated with a %Cartesian kernel, which defines the `Point_3` for the vert
\image html CCBorderMask.png
\models ::PQQMask
\models ::PQQMask_3
\sa `CGAL::Subdivision_method_3`
@ -89,7 +89,7 @@ instantiated with a %Cartesian kernel, which defines the `Point_3` for the vert
\image html DSCornerMask.png
\models ::DQQMask
\models ::DQQMask_3
\sa `CGAL::Subdivision_method_3`
@ -141,7 +141,7 @@ instantiated with a %Cartesian kernel, which defines the `Point_3` for the vert
\image html LoopBorderMask.png
\models ::PTQMask
\models ::PTQMask_3
\sa `CGAL::Subdivision_method_3`
@ -206,7 +206,7 @@ the computation on the nodes of the stencil.
\tparam Polyhedron_3 must be a `CGAL::Polyhedron_3`
instantiated with a %Cartesian kernel, which defines the `Point_3` for the vertices.
\models ::Sqrt3Mask
\models ::Sqrt3Mask_3
\sa `CGAL::Subdivision_method_3`

View File

@ -0,0 +1,5 @@
/*!
\example Subdivision_method_3/CatmullClark_subdivision.cpp
\example Subdivision_method_3/DooSabin_subdivision.cpp
\example Subdivision_method_3/Customized_subdivision.cpp
*/

View File

@ -3,7 +3,7 @@ namespace CGAL {
\mainpage Triangulated Surface Mesh Simplification
\anchor Chapter_Triangulated_Surface_Mesh_Simplification
\anchor chaptermeshsimplification
\autotoc
\authors Fernando Cacciola
@ -34,7 +34,7 @@ is a model of that concept can be simplified. The concept is defined not in term
of functions and traits, making it easy to adapt any concrete surface type,
even if it is not a halfedge data structure at all.
In particular, the concept definition follows the design of the
<A HREF="http://www.boost.org/libs/graph/doc/index.html"> Boost Graph Library (<span class="textsc">Bgl</span>)</A>
<A HREF="http://www.boost.org/libs/graph/doc/index.html"> Boost Graph Library (Bgl)</A>
\cite cgal:sll-bgl-02.
The design is <A HREF="http://en.wikipedia.org/wiki/Policy-based_design"><I>policy-based</I></A>

View File

@ -0,0 +1,5 @@
/*!
\example Surface_mesh_simplification/edge_collapse_polyhedron.cpp
\example Surface_mesh_simplification/edge_collapse_enriched_polyhedron.cpp
\example Surface_mesh_simplification/edge_collapse_constrained_polyhedron.cpp
*/

View File

@ -3,7 +3,6 @@ namespace CGAL {
\mainpage Surface Reconstruction from Point Sets
\anchor Chapter_Surface_Reconstruction_from_Point_Sets
\anchor chapsurface_reconstruction_points_3
\authors Pierre Alliez, Laurent Saboret, Ga&euml;l Guennebaud

View File

@ -12,8 +12,8 @@ the face base class may have additional geometric
requirements depending on the triangulation class.
At the base level,
(see Sections \ref Section_2D_Triangulations_Software_Design
and \ref 2D_TDS_default),
(see Sections \ref Section_2D_Triangulations_Software_Design
and \ref 2D_TDS_default ),
a face stores handles
on its three vertices and on the three neighboring faces.
The vertices and neighbors are indexed 0,1 and 2.
@ -39,7 +39,7 @@ as parameter in the face and vertex base classes.
This mechanism requires that the base class provides
a templated nested class `Rebind_TDS` that
itself provides
the subtype `Rebind_TDS<TDS2>::Other`
the subtype `Rebind_TDS::Other`
which is the <I>rebound</I> version of the base class.
This <I>rebound</I> base class is the class
that the `CGAL::Triangulation_data_structure_2`

View File

@ -35,7 +35,7 @@ as parameter in the face and vertex base classes.
This mechanism requires that the base class provides
a templated nested class `Rebind_TDS` that
itself provides
the subtype `Rebind_TDS<TDS2>::Other`
the subtype `Rebind_TDS::Other`
which is the <I>rebound</I> version of the base class.
This <I>rebound</I> base class is the class
that the `CGAL::Triangulation_data_structure_2`

View File

@ -29,7 +29,7 @@ Chapter \ref Chapter_2D_Triangulations, the model
`CGAL::Triangulation_data_structure_2<Vb,Fb>` has two template
parameters. The class `CGAL::Triangulation_data_structure_2<Vb,Fb>`
derives its `Vertex` and `Face` types from the two template parameters
\t %Vb and \t %Fb respectively.
\c %Vb and \c %Fb respectively.
If the triangulation data structure is used alone, these parameters
have to be instantiated by models of the concepts
@ -41,7 +41,7 @@ models `CGAL::Triangulation_ds_face_base_2<Tds>` and
If the triangulation data structure is plugged into a triangulation
class, the parameters have to be instantiated by models of different
refining concepts according to the actual type of the triangulation.
These refining concepts and their models are described in Chapter \ref
ref_chapter_2D_Triangulations.
These refining concepts and their models are described in Chapter
\ref Chapter_2D_Triangulations
*/

View File

@ -40,8 +40,8 @@ and predicates defined in `K`.
`Triangulation_euclidean_traits_xz_3<K>` to deal with projections on
the `xz`- or the `yz`-plane, respectively.
\sa \ref CGAL/Triangulation_euclidean_traits_xz_3.h
\sa \ref CGAL/Triangulation_euclidean_traits_yz_3.h
\sa `CGAL/Triangulation_euclidean_traits_xz_3.h`
\sa `CGAL/Triangulation_euclidean_traits_yz_3.h`
*/
template< typename K >

View File

@ -18,8 +18,7 @@ additional template parameters.
It is parameterized by base classes for vertices and cells which have to match
the requirements for the concepts `TriangulationDSCellBase_3` and
`TriangulationDSVertexBase_3` respectively
.
`TriangulationDSVertexBase_3` respectively.
They have the default values `Triangulation_ds_vertex_base_3<>` and
`Triangulation_ds_cell_base_3<>` respectively.

View File

@ -115,8 +115,7 @@ public:
/// @{
/*!
<I>Optional for the triangulation data
structure alone.</I>
<I>Optional for the triangulation data structure alone</I>.
*/
typedef Hidden_type Point;
@ -645,7 +644,7 @@ bool are_equal(const Facet & f, Cell_handle n, int j) const;
Two kinds of flips exist for a three-dimensional triangulation. They
are reciprocal. To be flipped, an edge must be incident to three
tetrahedra. During the flip, these three tetrahedra disappear and two
tetrahedra appear. Figure \ref TDS3figflips(left) shows the edge that
tetrahedra appear. Figure \ref TDS3figflips (left) shows the edge that
is flipped as bold dashed, and one of its three incident facets is
shaded. On the right, the facet shared by the two new tetrahedra is
shaded.

View File

@ -216,8 +216,7 @@ of a user provided type, and give access to it.
the geometric versions typically used by the geometric layer,
`Triangulation_vertex_base_3`, and `Triangulation_cell_base_3`).
<LI> write his own base classes following the requirements given by the
concepts `TriangulationCellBase_3` and `TriangulationVertexBase_3`
.
concepts `TriangulationCellBase_3` and `TriangulationVertexBase_3`.
</UL>
\subsection tds3cyclic Cyclic Dependency
@ -303,14 +302,14 @@ typedef Triangulation_vertex_base_3<GT, Vb2> Other;
The following example shows how to construct a 3D triangulation data
structure by inserting vertices.
\cgalexample{TDS_3/tds.cpp}
\cgalexample{Triangulation_3/tds.cpp}
## Cross-Linking Between a 2D and a 3D Data Structures ##
This example program illustrates how to setup a 2D and a 3D triangulation data
structures whose vertices respectively store vertex handles of the other one.
\cgalexample{TDS_3/linking_2d_and_3d.cpp}
\cgalexample{Triangulation_3/linking_2d_and_3d.cpp}
# Design and Implementation History # {#TDS_3Design}

View File

@ -0,0 +1,4 @@
/*!
\example Triangulation_3/tds.cpp
\example Triangulation_3/linking_2d_and_3d.cpp
*/

View File

@ -210,6 +210,7 @@ void remove(Vertex_handle v);
/*! \name Queries
Let us remark that \f$ \Pi({p}^{(w)}-{z}^{(w)}) > 0 \f$ is equivalent to `p` lies outside the sphere with center `z` and radius \f$ \sqrt{w_p^2+w_z^2}\f$. This remark helps provide an intuition about the following predicates.
\anchor Triangulation3figsidedim2
\image html sidedim2.gif side_of_power_circle
*/

View File

@ -348,6 +348,7 @@ Figure \ref T3figlayers shows in more detail the flexibility that is
provided, and the place where the user can insert his own vertex and/or cell
base classes.
\anchor T3figlayers
\image html design.gif "Triangulation software design."
The design of the triangulation data structure gives the possibility to store
@ -905,7 +906,7 @@ also be found in \cite cgal:dp-eegpd-03.
<TD ALIGN=RIGHT NOWRAP>
3.8
<TD ALIGN=RIGHT NOWRAP>
$ \infty $-loop
\f$ \infty \f$-loop
<TR><TD ALIGN=LEFT NOWRAP COLSPAN=6><HR>
<TR>
<TD ALIGN=LEFT NOWRAP>

View File

@ -0,0 +1,12 @@
/*!
\example Triangulation_3/simple_triangulation_3.cpp
\example Triangulation_3/color.cpp
\example Triangulation_3/adding_handles_3.cpp
\example Triangulation_3/info_insert_with_pair_iterator.cpp
\example Triangulation_3/info_insert_with_zip_iterator.cpp
\example Triangulation_3/info_insert_with_transform_iterator.cpp
\example Triangulation_3/simplex.cpp
\example Triangulation_3/fast_location_3.cpp
\example Triangulation_3/find_conflicts_3.cpp
\example Triangulation_3/regular_3.cpp
*/