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/CGAL/boost/graph/properties.h -text
BGL/doc/BGL/Concepts/HalfedgeGraph.h -text BGL/doc/BGL/Concepts/HalfedgeGraph.h -text
BGL/doc/BGL/PackageDescription.txt -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-detail.png -text svneol=unset#image/png
BGL/doc/BGL/fig/emst.jpg -text svneol=unset#image/jpeg BGL/doc/BGL/fig/emst.jpg -text svneol=unset#image/jpeg
BGL/doc/BGL/fig/ex_bgl.gif -text svneol=unset#image/gif 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/MinSphereOfSpheresTraits.h -text
Bounding_volumes/doc/Bounding_volumes/Concepts/RectangularPCenterTraits_2.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/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.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/annulus.pdf -text svneol=unset#application/pdf
Bounding_volumes/doc/Bounding_volumes/fig/ball.gif -text svneol=unset#image/gif 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--Split_2.h -text
Circular_kernel_2/doc/Circular_kernel_2/Concepts/CircularKernel.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/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.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/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 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--Split_3.h -text
Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel.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/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.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_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 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_gradient_fitting_traits_2.h -text
Interpolation/doc/Interpolation/CGAL/Interpolation_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/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/interpolation_functions.h -text
Interpolation/doc/Interpolation/CGAL/natural_neighbor_coordinates_2.h -text Interpolation/doc/Interpolation/CGAL/natural_neighbor_coordinates_2.h -text
Interpolation/doc/Interpolation/CGAL/regular_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/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/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/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.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/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 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/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/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/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/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/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 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/Concepts/Polynomial_d.h -text
Polynomial/doc/Polynomial/PackageDescription.txt -text Polynomial/doc/Polynomial/PackageDescription.txt -text
Polynomial/doc/Polynomial/Polynomial.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/Polynomial.png -text svneol=unset#image/png
Polynomial/doc/Polynomial/fig/sturm_habicht_def.gif -text svneol=unset#image/gif 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 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_models.h -text
QP_solver/doc/QP_solver/CGAL/QP_options.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/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/LinearProgram.h -text
QP_solver/doc/QP_solver/Concepts/MPSFormat.h -text QP_solver/doc/QP_solver/Concepts/MPSFormat.h -text
QP_solver/doc/QP_solver/Concepts/NonnegativeLinearProgram.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/Concepts/SpatialSortingTraits_d.h -text
Spatial_sorting/doc/Spatial_sorting/PackageDescription.txt -text Spatial_sorting/doc/Spatial_sorting/PackageDescription.txt -text
Spatial_sorting/doc/Spatial_sorting/Spatial_sorting.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.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-median.pdf -text svneol=unset#application/pdf
Spatial_sorting/doc/Spatial_sorting/fig/Hilbert-middle.gif -text svneol=unset#image/gif 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/Concepts/VectorField_2.h -text
Stream_lines_2/doc/Stream_lines_2/PackageDescription.txt -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/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.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/1.pdf -text svneol=unset#application/pdf
Stream_lines_2/doc/Stream_lines_2/fig/2.gif -text svneol=unset#image/gif 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/Concepts/Sqrt3Mask_3.h -text
Subdivision_method_3/doc/Subdivision_method_3/PackageDescription.txt -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/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.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/CCBorderMask.png -text svneol=unset#image/png
Subdivision_method_3/doc/Subdivision_method_3/fig/CCSubdivision.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/Concepts/StopPredicate.h -text
Surface_mesh_simplification/doc/Surface_mesh_simplification/PackageDescription.txt -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/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.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/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 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/Concepts/TriangulationDataStructure_3.h -text
Triangulation_3/doc/TDS_3/PackageDescription.txt -text Triangulation_3/doc/TDS_3/PackageDescription.txt -text
Triangulation_3/doc/TDS_3/TriangulationDS_3.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.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/comborient.pdf -text svneol=unset#application/pdf
Triangulation_3/doc/TDS_3/fig/design_tds.gif -text svneol=unset#image/gif 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/Concepts/WeightedPoint.h -text
Triangulation_3/doc/Triangulation_3/PackageDescription.txt -text Triangulation_3/doc/Triangulation_3/PackageDescription.txt -text
Triangulation_3/doc/Triangulation_3/Triangulation_3.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/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.gif -text svneol=unset#image/gif
Triangulation_3/doc/Triangulation_3/fig/HD.pdf -text svneol=unset#application/pdf 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 \mainpage 3D Alpha Shapes
\anchor Chapter_3D_Alpha_Shapes \anchor Chapter_3D_Alpha_Shapes
\anchor I1ChapterAlphashapes3D
\autotoc \autotoc
\authors Tran Kai Frank Da, Sébastien Loriot, and Mariette Yvinec \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 ## ## Example: Minimum Spanning Tree of a Polyhedral Surface ##
The example code computes the minimum spanning tree on a polyhedral surface. The example code computes the minimum spanning tree on a polyhedral
More examples can be found in Chapter \ref chaptermeshsimplification on surface mesh simplification. 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 ## ## 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. 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} # 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 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())`. 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 ## ## 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 The example further illustrates that the graph traits also works
for the Delaunay triangulation. 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} # 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 `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$. 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 \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 breadth-first-search visitor to obtain these times and update the faces
accordingly: accordingly:
\cgalexample{BGL/dual.cpp} \cgalexample{BGL_arrangement_2/dual.cpp}
*/ */
} /* namespace CGAL */ } /* 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 shows that it is advisable to switch on random shuffling
in order to deal with a 'bad' order of the input points. 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 Other classes for which we provide solutions are ellipses
(`CGAL::Min_ellipse_2<Traits>`), rectangles (`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 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.) 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 The second program outputs the approximation in a format suitable
for display in Maplesoft's Maple. 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 > 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 To illustrate the creation of `Min_circle_2` and to show that
randomization can be useful in certain cases, we give an example. 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 > 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 can be useful in certain cases, we give an example. The example also
shows how the coefficents of the constructed ellipse can be accessed. 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 > template< typename Traits >

View File

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

View File

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

View File

@ -55,7 +55,7 @@ The following code generates a random convex polygon
`P` with 20 vertices and computes the minimum enclosing `P` with 20 vertices and computes the minimum enclosing
parallelogram of `P`. 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 `P` with 20 vertices and computes the minimum enclosing
rectangle of `P`. 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 `P` with 20 vertices and computes the minimum enclosing
strip of `P`. 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 The following code generates a random set of ten points
and computes its two-centers. 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 template < class ForwardIterator, class

View File

@ -5,7 +5,7 @@
The concept `RectangularPCenterTraits_2` defines types and operations The concept `RectangularPCenterTraits_2` defines types and operations
needed to compute rectilinear \f$ p\f$-centers of a planar point set 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>` \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/test_grabbers.cpp
\example CGAL_ipelets/simple_triangulation.cpp
*/ */

View File

@ -3,7 +3,6 @@ namespace CGAL {
\mainpage 2D Circular Geometry %Kernel \mainpage 2D Circular Geometry %Kernel
\anchor Chapter_2D_Circular_Geometry_Kernel \anchor Chapter_2D_Circular_Geometry_Kernel
\anchor chaptercircularkernel
\autotoc \autotoc
\authors Pedro Machado Manh&atilde;es de Castro, Sylvain Pion, and Monique Teillaud \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. Testing whether the interiors of two curves overlap.
\bug There is no DoOverlap in the Linear Kernel. \bug There is no DoOverlap in the Linear Kernel.
\refines ::Kernel::DoOverlap_2 \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} # Software Design # {#Circular_kernel_3Software}
The design of `Spherical_kernel_3` is similar to the design of 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: It has two template parameters:
<UL> <UL>
<LI> the first parameter must model the \cgal <LI> the first parameter must model the \cgal
@ -188,7 +188,7 @@ then compared.
# Design and Implementation History # {#Circular_kernel_3Design} # Design and Implementation History # {#Circular_kernel_3Design}
This package follows the 2D circular kernel package (see 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. choices of design.
Julien Hazebrouck and Damien Leroy participated in a first Julien Hazebrouck and Damien Leroy participated in a first

View File

@ -4,7 +4,7 @@
\cgalconcept \cgalconcept
\refines ::Kernel::ComputeApproximateSquaredLength_3 \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 \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 { class SphericalKernel::DoOverlap_3 {
public: 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. upper hull of a set of points.
\image html saarhull.png \image html saarhull.png
\image latex saarhull width=6.5cm
\section secconvex_hull_2 Convex Hull \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 using an incremental construction algorithm, or using a
triangulation to get a fully dynamic computation. triangulation to get a fully dynamic computation.
\section secconvex_hull_3 Static Convex Hull Construction # Static Convex Hull Construction # {#secconvex_hull_3}
The function The function
`::convex_hull_3` provides an `::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 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 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 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 triangle, or a polyhedron. Both versions accept a range of input
iterators defining the set of points whose convex hull is to be computed 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 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} # 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 interface similar to `::convex_hull_3` for the \f$ d\f$-dimensional
incremental construction algorithm \cite cms-frric-93 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 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 input points and returns a polyhedron, but it does not have a traits class
in its interface. It uses the kernel in its interface. It uses the kernel
class `Kernel` used in the polyhedron type to define an instance of the 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 In almost all cases, the static and the dynamic version will
be faster than the incremental convex hull algorithm (mainly 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. version when you need an efficient incremental convex hull algorithm.
To use the full functionality available with the \f$ d\f$-dimensional class 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), 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 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 traits class `Convex_hull_d_traits_3<K>`, as shown in the following
example. example.
## Example ## ## Example ##
@ -108,7 +108,7 @@ example.
# Dynamic Convex Hull Construction # {#Convex_hull_3Dynamic} # Dynamic Convex Hull Construction # {#Convex_hull_3Dynamic}
Fully dynamic maintenance of a convex hull can be achieved by using the 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 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. convex hull edges are simply the finite edges of infinite faces.
The following example illustrates the dynamic construction of a convex hull. 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. 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 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 (using `Delaunay_triangulation_3` and `::convex_hull_3_to_polyhedron_3`), the kernel
used was `::Exact_predicates_inexact_constructions_kernel`. For the incremental version 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 `::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 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. 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 model <I>e.g.</I>, `Homogeneous<RT>` or `Cartesian<FT>` for use
with `Convex_hull_d`, where the dimension is fixed to three. with `Convex_hull_d`, where the dimension is fixed to three.
The validity of the computed convex hull can be checked using the 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 of Mehlhorn <I>et al.</I>\cite mnssssu-cgpvg-96 to determine if
the vertices of a given polytope constitute a strongly convex point the vertices of a given polytope constitute a strongly convex point
set or not. set or not.

View File

@ -6,7 +6,7 @@
\todo check generated documentation \todo check generated documentation
\PkgDescriptionBegin{dD Convex Hulls and Delaunay Triangulations,PkgConvexHullDSummary} \PkgDescriptionBegin{dD Convex Hulls and Delaunay Triangulations,PkgConvexHullDSummary}
\PkgPicture{convex_hull_d-teaser.png} \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.} \PkgDesc{This package provides functions for computing convex hulls and Delaunay triangulations in \f$ d\f$-dimensional Euclidean space.}
\PkgSince{2.3} \PkgSince{2.3}
\PkgBib{cgal:hs-chdt3} \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 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. 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 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. 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 In the second example we replace the built-in array
by a `std::vector` of the Standard Template Library. 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 `std::back_inserter(result)`. This output iterator does nothing when
incremented, and calls `result.push_back(..)` on the assignment. 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 The next example program reads a sequence of points from standard
input `std::cin` and writes the points on the convex hull to 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. 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()` 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 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 We also recommend the standard text books by
Josuttis \cite cgal:j-csl-99, or Austern \cite cgal:a-gps-98 for the 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 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 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 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 \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/STL_Extension.tag=../../CGAL.CGAL.STL-Extensions-for-CGAL/html</item>
<item>./tags/Algebraic_foundations.tag=../../CGAL.CGAL.Algebraic-Foundations/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/Circulator.tag=../../CGAL.CGAL.Handles-and-Circulators/html</item>
<item>./tags/Stream_support.tag=../../CGAL.CGAL.IO-Streams/html</item>
</list> </list>
<string name="LAYOUT_FILE">DoxygenLayoutPackage.xml</string> <string name="LAYOUT_FILE">DoxygenLayoutPackage.xml</string>
<list name="ALIASES" append="true"> <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> <string name="EXAMPLE_PATH">../STL_Extension/examples</string>
<list name="TAGFILES" append="false"> <list name="TAGFILES" append="false">
<item>./tags/Manual.tag=../../CGAL.CGAL/html</item> <item>./tags/Manual.tag=../../CGAL.CGAL/html</item>
<item>./tags/Circulator.tag=../../CGAL.CGAL.Handles-and-Circulators/html</item>
</list> </list>
</doxygen> </doxygen>
</project> </project>
@ -106,6 +108,8 @@ namespace for the XML file to be processed properly. -->
<bool name="EXTRACT_ALL">false</bool> <bool name="EXTRACT_ALL">false</bool>
<!-- <bool name="HIDE_UNDOC_MEMBERS">true</bool> --> <!-- <bool name="HIDE_UNDOC_MEMBERS">true</bool> -->
<bool name="HIDE_UNDOC_CLASSES">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> <bool name="SHOW_INCLUDE_FILES">false</bool>
<list name="TAGFILES" append="true"> <list name="TAGFILES" append="true">
<item>./tags/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface/html</item> <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> <string name="EXAMPLE_PATH">../Surface_reconstruction_points_3/examples</string>
<bool name="EXTRACT_ALL">false</bool> <bool name="EXTRACT_ALL">false</bool>
<bool name="HIDE_UNDOC_CLASSES">true</bool> <bool name="HIDE_UNDOC_CLASSES">true</bool>
<bool name="WARN_IF_UNDOCUMENTED">false</bool>
<bool name="SHOW_INCLUDE_FILES">true</bool> <bool name="SHOW_INCLUDE_FILES">true</bool>
<list name="TAGFILES" append="true"> <list name="TAGFILES" append="true">
<item>./tags/Surface_mesher.tag=../../CGAL.CGAL.3D-Surface-Mesh-Generation/html</item> <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/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface/html</item>
<item>./tags/Arrangement_on_surface_2.tag=../../CGAL.CGAL.2D-Arrangements/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/Triangulation_2.tag=../../CGAL.CGAL.2D-Triangulations/html</item>
<item>./tags/Surface_mesh_simplification.tag=../../CGAL.CGAL.Triangulated-Surface-Mesh-Simplification/html</item>
</list> </list>
</doxygen> </doxygen>
</project> </project>
@ -300,7 +306,6 @@ namespace for the XML file to be processed properly. -->
<string name="IMAGE_PATH">../Polyhedron/doc/Polyhedron/fig</string> <string name="IMAGE_PATH">../Polyhedron/doc/Polyhedron/fig</string>
<list name="TAGFILES" append="true"> <list name="TAGFILES" append="true">
<item>./tags/HalfedgeDS.tag=../../CGAL.CGAL.Halfedge-Data-Structures/html</item> <item>./tags/HalfedgeDS.tag=../../CGAL.CGAL.Halfedge-Data-Structures/html</item>
<item>./tags/Stream_support.tag=../../CGAL.CGAL.IO-Streams/html</item>
</list> </list>
</doxygen> </doxygen>
</project> </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="GENERATE_TAGFILE">./tags/Stream_support.tag</string>
<string name="EXAMPLE_PATH">../Stream_support/examples</string> <string name="EXAMPLE_PATH">../Stream_support/examples</string>
<string name="IMAGE_PATH">../Stream_support/doc/IOstream/fig</string> <string name="IMAGE_PATH">../Stream_support/doc/IOstream/fig</string>
<list name="TAGFILES" append="false">
</list>
</doxygen> </doxygen>
</project> </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> <string name="IMAGE_PATH">../Convex_hull_3/doc/Convex_hull_3/fig</string>
<list name="TAGFILES" append="true"> <list name="TAGFILES" append="true">
<item>./tags/Convex_hull_2.tag=../../CGAL.CGAL.2D-Convex-Hulls-and-Extreme-Points/html</item> <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/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> <item>./tags/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface</item>
</list> </list>
</doxygen> </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_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="STRIP_FROM_INC_PATH">../Convex_hull_d/doc/Convex_hull_d/</string>
<string name="GENERATE_TAGFILE">./tags/Convex_hull_d.tag</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> </doxygen>
</project> </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/Triangulation_2.tag=../../CGAL.CGAL.2D-Triangulation/html</item>
<item>./tags/Number_types.tag=../../CGAL.CGAL.Number-Types/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/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> </list>
</doxygen> </doxygen>
</project> </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="GENERATE_TAGFILE">./tags/Envelope_2.tag</string>
<string name="EXAMPLE_PATH">../Envelope_2/examples</string> <string name="EXAMPLE_PATH">../Envelope_2/examples</string>
<string name="IMAGE_PATH">../Envelope_2/doc/Envelope_2/fig</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> </doxygen>
</project> </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="EXAMPLE_PATH">../Minkowski_sum_2/examples</string>
<string name="IMAGE_PATH">../Minkowski_sum_2/doc/Minkowski_sum_2/fig</string> <string name="IMAGE_PATH">../Minkowski_sum_2/doc/Minkowski_sum_2/fig</string>
<list name="TAGFILES" append="true"> <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/Polygon.tag=../../CGAL.CGAL.Polygon/html</item>
<item>./tags/Boolean_set_operations_2.tag=../../CGAL.CGAL.2D-Regularized-Boolean-Set-Operations/html</item> <item>./tags/Boolean_set_operations_2.tag=../../CGAL.CGAL.2D-Regularized-Boolean-Set-Operations/html</item>
</list> </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="STRIP_FROM_INC_PATH">../Spatial_searching/doc/Spatial_searching/</string>
<string name="GENERATE_TAGFILE">./tags/Spatial_searching.tag</string> <string name="GENERATE_TAGFILE">./tags/Spatial_searching.tag</string>
<string name="EXAMPLE_PATH">../Spatial_searching/examples</string> <string name="EXAMPLE_PATH">../Spatial_searching/examples</string>
<string name="IMAGE_PATH">../Spatial_searching/doc/Spatial_searching/fig</string>
</doxygen> </doxygen>
</project> </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="GENERATE_TAGFILE">./tags/Snap_rounding_2.tag</string>
<string name="IMAGE_PATH">../Snap_rounding_2/doc/Snap_rounding_2/fig</string> <string name="IMAGE_PATH">../Snap_rounding_2/doc/Snap_rounding_2/fig</string>
<string name="EXAMPLE_PATH">../Snap_rounding_2/examples</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> </doxygen>
</project> </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="STRIP_FROM_INC_PATH">../CGAL_ipelets/doc/CGAL_ipelets/</string>
<string name="GENERATE_TAGFILE">./tags/CGAL_ipelets.tag</string> <string name="GENERATE_TAGFILE">./tags/CGAL_ipelets.tag</string>
<string name="IMAGE_PATH">../CGAL_ipelets/doc/CGAL_ipelets/fig</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> </doxygen>
</project> </project>
@ -1140,6 +1162,7 @@ namespace for the XML file to be processed properly. -->
<string name="EXAMPLE_PATH">../Triangulation_3/examples</string> <string name="EXAMPLE_PATH">../Triangulation_3/examples</string>
<list name="TAGFILES" append="true"> <list name="TAGFILES" append="true">
<item>./tags/TDS_3.tag=../../CGAL.CGAL.3D-Triangulation-Data-Structure/html</item> <item>./tags/TDS_3.tag=../../CGAL.CGAL.3D-Triangulation-Data-Structure/html</item>
<item>./tags/Geomview.tag=../../CGAL.CGAL.Geomview/html</item>
</list> </list>
</doxygen> </doxygen>
</project> </project>
@ -1156,6 +1179,8 @@ namespace for the XML file to be processed properly. -->
<list name="TAGFILES" append="true"> <list name="TAGFILES" append="true">
<item>./tags/TDS_3.tag=../../CGAL.CGAL.3D-Triangulation-Data-Structure/html</item> <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/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> </list>
</doxygen> </doxygen>
</project> </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="IMAGE_PATH">../Point_set_processing_3/doc/Point_set_processing_3/fig</string>
<string name="EXAMPLE_PATH">../Point_set_processing_3/examples</string> <string name="EXAMPLE_PATH">../Point_set_processing_3/examples</string>
<list name="TAGFILES" append="true"> <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/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/Bounding_volumes.tag=../../CGAL.CGAL.Bounding-Volumes/html</item>
<item>./tags/Principal_component_analysis.tag=../../CGAL.CGAL.Principal-Component-Analysis/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> <item>../Nef_3/demo</item>
</list> </list>
<list name="TAGFILES" append="true"> <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/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> <item>./tags/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface/html</item>
</list> </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/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/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/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_lines_2.tag=../../CGAL.CGAL.2D-Placement-of-Streamlines/html</item>
<item>./tags/Stream_support.tag=../../CGAL.CGAL.IO-Streams/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> <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} \cgalexample{Envelope_2/convex_hull.cpp}
\anchor env2_figex_circ \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 ## ## 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 `double` values \f$ x\f$ and \f$ y\f$ and returning an initialized point
`(x,y)` of type `P`. `(x,y)` of type `P`.
Predefined implementations for these creators like the default are 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 - The `value_type` of the `ForwardIterator` must be assignable
to `P`. 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 `double` values \f$ x\f$ and \f$ y\f$ and returning an initialized point
`(x,y)` of type `P`. Predefined implementations for these `(x,y)` of type `P`. Predefined implementations for these
creators like the default can be found in creators like the default can be found in
Section \ref sectionCreatorFunctionObjects. Section \ref STLCreators.
- The `OutputIterator` must accept values of type `P`. If the - The `OutputIterator` must accept values of type `P`. If the
`OutputIterator` has a `value_type` the default `OutputIterator` has a `value_type` the default
initializer of the `creator` can be used. `P` is set to 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 `double` values \f$ x\f$ and \f$ y\f$ and returning an initialized point
`(x,y)` of type `P`. Predefined implementations for these `(x,y)` of type `P`. Predefined implementations for these
creators like the default can be found in creators like the default can be found in
Section \ref sectionCreatorFunctionObjects. Section \ref STLCreators.
- The `value_type` of the `RandomAccessIterator` must be - The `value_type` of the `RandomAccessIterator` must be
assignable to `P`. `P` is equal to the `value_type` of the assignable to `P`. `P` is equal to the `value_type` of the
`RandomAccessIterator` when using the default initializer. `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 `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 point `(x,y,z)` of type `P`. Predefined implementations for
these creators like the default can be found in 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 - The `OutputIterator` must accept values of type `P`. If the
`OutputIterator` has a `value_type` the default `OutputIterator` has a `value_type` the default
initializer of the `creator` can be used. `P` is set to initializer of the `creator` can be used. `P` is set to

View File

@ -25,10 +25,6 @@ domain.
R >` for some representation class `R`, R >` for some representation class `R`,
</OL> </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_square_2<Point_2, Creator>`
\sa `CGAL::Random_points_in_disc_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} \cgalexample{Generator/random_convex_set.cpp}
*/ */
template < class OutputIterator, class PointGenerator, template < class OutputIterator, class PointGenerator, class Traits >
class Traits > OutputIterator random_convex_set_2( std::size_t n, OutputIterator random_convex_set_2( std::size_t n,
OutputIterator o, const PointGenerator& pg, Traits t = OutputIterator o, const PointGenerator& pg, Traits t = Random_convex_set_traits_2);
Default_traits);
} /* namespace CGAL */ } /* 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 generators and second deterministic point generators. Most random
point generators and a few deterministic point generators are provided point generators and a few deterministic point generators are provided
as input iterators. The input iterators model an infinite sequence of as input iterators. The input iterators model an infinite sequence of
points. The function `CGAL::cpp0x::copy_n()` can be used to copy a points. The function \ref CGAL::copy_n can be used to copy a
finite sequence; see Section \ref sectionCopyN. The iterator adaptor finite sequence. The iterator adaptor
`Counting_iterator` can be used to create finite iterator `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 Other generators are provided as functions that write to output
iterators. Further functions add degeneracies or random perturbations. 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 or \f$ d\f$-dimensional ball (`Random_points_in_ball_d`) or on the boundary of a
sphere (`Random_points_on_sphere_d`). sphere (`Random_points_on_sphere_d`).
For generating grid points, we provide the function 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. an output iterator.
We also provide two functions for generating more complex geometric objects. We also provide two functions for generating more complex geometric objects.
@ -106,10 +106,10 @@ for the example output.
\anchor figureIntegerPointGenerator \anchor figureIntegerPointGenerator
\image html generators_prog2.png "Output of example program for point generators working" \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 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 `Join_input_iterator_2` to generate
composed objects from other composed objects from other
generators - here two-dimensional segments from two point generators. 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 new diagonal, the old face is to the left. The time is proportional
to the distance from `h` to `g` around the face. to the distance from `h` to `g` around the face.
\image latex euler_hds
\image html euler_face.gif \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`. \requires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`.
\image latex euler_hds
\image html euler_face.gif \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. The time is proportional to the size of the face.
\pre `h` is not a border halfedge. \pre `h` is not a border halfedge.
\image latex euler_center
\image html euler_center.gif \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`. \requires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`.
\image latex euler_center
\image html euler_center.gif \image html euler_center.gif
*/ */
Halfedge_handle erase_center_vertex( Halfedge_handle g); 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()`, data structure and form a cycle: i.e., `h->vertex() == i->opposite()->vertex()`,
\f$\ldots\f$ , `j->vertex() == h->opposite()->vertex()`. \f$\ldots\f$ , `j->vertex() == h->opposite()->vertex()`.
\image latex euler_loop
\image html euler_loop.gif \image html euler_loop.gif
*/ */
@ -395,7 +390,6 @@ data structure unchanged.
\requires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`. \requires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`.
\image latex euler_loop
\image html euler_loop.gif \image html euler_loop.gif
*/ */
Halfedge_handle join_loop( Halfedge_handle h, Halfedge_handle g); 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. possible for vertices, halfedges, and faces.
\anchor figureOptionalMethods \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." \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 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. halfedges, vertices, and faces.
\anchor figureHalfedgeDSOptionalMethods \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." \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 For the protection of the integrity of the data structure classes such

View File

@ -68,17 +68,17 @@ public:
/*! /*!
model of `HalfedgeDSVertex`. model of `HalfedgeDSVertex`.
*/ */
typedef Hidden_type Vertex_wrapper<Refs,Traits>::Vertex; typedef Vertex_wrapper<Refs,Traits>::Vertex Vertex;
/*! /*!
model of `HalfedgeDSHalfedge`. model of `HalfedgeDSHalfedge`.
*/ */
typedef Hidden_type Halfedge_wrapper<Refs,Traits>::Halfedge; typedef Halfedge_wrapper<Refs,Traits>::Halfedge Halfedge;
/*! /*!
model of `HalfedgeDSFace`. 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 information, for example the halfedge pointers in faces or the
storage of faces at all. storage of faces at all.
\image latex halfedge
\image html halfedge_small.gif \image html halfedge_small.gif
The halfedge data structure is a combinatorial data structure, The halfedge data structure is a combinatorial data structure,
@ -57,7 +56,6 @@ the old implementation.
# Software Design # {#HalfedgeDSSoftware} # Software Design # {#HalfedgeDSSoftware}
\anchor figureHalfedgeDSDesign \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." \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 type used for the point. The program creates a loop, consisting
of two halfedges, one vertex and two faces, and checks its validity. of two halfedges, one vertex and two faces, and checks its validity.
\image latex loop width=0.3
\image html loop.gif \image html loop.gif
\cgalexample{HalfedgeDS/hds_prog_default.cpp} \cgalexample{HalfedgeDS/hds_prog_default.cpp}
@ -186,16 +183,14 @@ member variable `color`.
## Example Defining a More %Compact Halfedge ## ## Example Defining a More %Compact Halfedge ##
\advancedbegin \advanced The halfedge data structure as presented here is slightly less space
The halfedge data structure as presented here is slightly less space
efficient as, for example, the winged-edge data efficient as, for example, the winged-edge data
structure \cite b-prcv-75, the DCEL \cite mp-fitcp-78 or variants of 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, the quad-edge data structure \cite gs-pmgsc-85. On the other hand,
it does not require any search operations during traversals. A it does not require any search operations during traversals. A
comparison can be found in \cite k-ugpdd-99. 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 representation using traditional C techniques (i.e., type casting and
the assumption that pointers, especially those from <TT>malloc</TT> or the assumption that pointers, especially those from <TT>malloc</TT> or
<TT>new</TT>, point to even addresses). The idea goes as follows: The <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 handle. Furthermore, we do not implement a pointer to the previous
halfedge. What remains are three pointers per halfedge. 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 from pointers to halfedge handles. The same solution can be applied to
the list-based halfedge data structure `CGAL::HalfedgeDS_list`, the list-based halfedge data structure `CGAL::HalfedgeDS_list`,
see <TT>examples/HalfedgeDS/hds_prog_compact2.cpp</TT>. Here is the 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} \cgalexample{HalfedgeDS/hds_prog_compact.cpp}
\advancedend
## Example Using the Halfedge %Iterator ## ## Example Using the Halfedge %Iterator ##
Two edges are created in the default halfedge data structure. 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 might be more convenient to use than the halfedge data structure
directly, since the halfedge data structure is meant as an directly, since the halfedge data structure is meant as an
implementation layer.See for example the `CGAL::Polyhedron_3` 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 The data structure provided here is known as the
FE-structure \cite w-ebdss-85, as 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>`FT`
<LI>`Point_2` <LI>`Point_2`
<LI>`construct_circumcenter_2_object` <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. the traits class of the `polygon_area_2` function.
</UL> </UL>
<LI>`OutputIterator::value_type` is equivalent to <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 Voronoi cell of the query point `p` with the tangent plane to the
surface at `p`. 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 addition, a Boolean value that certifies whether or not, the Voronoi
cell of `p` can be affected by points that lie outside the input 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 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 The following example defines an efficient and exact version of the
orientation predicate over three points using the Cartesian representation orientation predicate over three points using the Cartesian representation
with double coordinates and without reference counting 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 Of course, the orientation predicate can already be found in the kernel, but
you can follow this example to filter your own predicates. you can follow this example to filter your own predicates.
It uses the fast but inexact predicate based on interval arithmetic for 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) \addtogroup compare_x_circular compare_x (Circular Kernel)
\ingroup compare_x \ingroup compare_x
\details See Chapter \ref chaptercircularkernel. \details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
\code \code
#include <CGALCGAL/global_functions_circular_kernel_2.h> #include <CGALCGAL/global_functions_circular_kernel_2.h>
@ -980,7 +980,7 @@ Comparison_result
/*! /*!
\addtogroup compare_x_spherical compare_x (Spherical Kernel) \addtogroup compare_x_spherical compare_x (Spherical Kernel)
\ingroup compare_x \ingroup compare_x
\details See Chapter \ref chaptersphericalkernel. \details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
\code \code
#include <CGAL/global_functions_spherical_kernel_3.h> #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) \addtogroup compare_xy_circular compare_xy (Circular Kernel)
\ingroup compare_xy \ingroup compare_xy
\details See Chapter \ref chaptercircularkernel. \details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
\code \code
#include <CGAL/global_functions_circular_kernel_2.h> #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) \addtogroup compare_xy_spherical compare_xy (Spherical Kernel)
\ingroup compare_xy \ingroup compare_xy
\details See Chapter \ref chaptersphericalkernel. \details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
\code \code
#include <CGAL/global_functions_spherical_kernel_3.h> #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 \name With the 2D Circular Kernel
See \ref chaptercircularkernel. See \ref Chapter_2D_Circular_Geometry_Kernel.
\code \code
#include <CGAL/global_functions_circular_kernel_2.h> #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) \addtogroup compare_y_circular compare_y (Circular Kernel)
\ingroup compare_y \ingroup compare_y
\details See Chapter \ref chaptercircularkernel. \details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
\code \code
#include <CGAL/global_functions_circular_kernel_2.h> #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) \addtogroup compare_y_spherical compare_y (Spherical Kernel)
\ingroup compare_y \ingroup compare_y
\details See Chapter \ref chaptersphericalkernel. \details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
\code \code
#include <CGAL/global_functions_circular_kernel_3.h> #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) \addtogroup compare_xyz_spherical compare_xyz (Spherical Kernel)
\ingroup compare_xyz \ingroup compare_xyz
\details See Chapter \ref chaptersphericalkernel \details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
\code \code
#include <CGAL/global_functions_circular_kernel_3.h> #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 \name With the 3D Spherical Kernel
\details See Chapter \ref chaptersphericalkernel \details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
\code \code
#include <CGAL/global_functions_circular_kernel_3.h> #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 ## ## With the 2D Circular %Kernel ##
\details See Chapter \ref chaptercircularkernel \details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel
\code \code
#include <CGAL/Circular_kernel_intersections.h> #include <CGAL/Circular_kernel_intersections.h>
@ -63,12 +63,12 @@ the following:
- `Circular_arc_2<CircularKernel>` - `Circular_arc_2<CircularKernel>`
An example illustrating this is presented in An example illustrating this is presented in
Chapter \ref chaptercircularkernel. Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
## With the 3D Spherical Kernel ## ## With the 3D Spherical Kernel ##
\details See Chapter \ref chaptersphericalkernel \details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
\code \code
#include <CGAL/Spherical_kernel_intersections.h> #include <CGAL/Spherical_kernel_intersections.h>
@ -86,7 +86,7 @@ the following:
- `Circular_arc_3<SphericalKernel>` - `Circular_arc_3<SphericalKernel>`
An example illustrating this is presented in An example illustrating this is presented in
Chapter \ref chaptersphericalkernel. Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
\sa `CGAL::intersection` \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 Examples illustrating the use of this function in the case of the 2D
Circular %Kernel and the 3D Spherical %Kernel are presented respectively Circular %Kernel and the 3D Spherical %Kernel are presented respectively
in Chapters \ref chaptercircularkernel and \ref in Chapters \ref Chapter_2D_Circular_Geometry_Kernel and \ref
chaptersphericalkernel. Chapter_3D_Spherical_Geometry_Kernel.
\sa `CGAL::do_intersect` \sa `CGAL::do_intersect`
@ -379,7 +379,7 @@ Object intersection(const Plane_3<Kernel>& pl1,
/*! /*!
\addtogroup intersection_circular intersection (Circular Kernel) \addtogroup intersection_circular intersection (Circular Kernel)
\ingroup intersection \ingroup intersection
\details See Chapter \ref chaptercircularkernel \details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel
\code \code
#include <CGAL/Circular_kernel_intersections.h> #include <CGAL/Circular_kernel_intersections.h>
@ -433,7 +433,7 @@ intersection(const Type1 &obj1, const Type2 &obj2,
/*! /*!
\addtogroup intersection_spherical intersection (Spherical Kernel) \addtogroup intersection_spherical intersection (Spherical Kernel)
\ingroup intersection \ingroup intersection
\details See Chapter \ref chaptersphericalkernel \details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
\code \code
#include <CGAL/Spherical_kernel_intersections.h> #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 sequence of generalized polygons, whose edges are either line segments or
circular arcs. circular arcs.
The output sequence is returned via the output iterator `oi`, whose 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. \pre `P` is a simple polygon.
*/ */
template<class Kernel, class Container, class OutputIterator> 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 correspond to line segments and circular arcs, both are special types of
conic arcs, as represented by the `traits` class. conic arcs, as represented by the `traits` class.
The output sequence is returned via the output iterator `oi`, whose 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. \pre `P` is a simple polygon.
*/ */
template<class ConicTraits, class Container, class OutputIterator> 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 { namespace CGAL {
/*! /*!
@ -123,7 +116,7 @@ contains `S.number_of_holes()` holes in its interior).
<center> <center>
\anchor mink_figsum_tri \anchor mink_figsum_tri
\image html sum_triangles.gif \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> </center>
The following example program constructs the Minkowski sum of two triangles, 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 \image html tight.gif
<center> <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> </center>
In the following program we compute the Minkowski sum of two polygons In the following program we compute the Minkowski sum of two polygons
@ -205,7 +198,7 @@ vertex.
</UL> </UL>
The following example demonstrates the computation of the Minkowski sum 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 depicted in Figure \ref mink_figsum_holes), using the small-side
angle-bisector decomposition strategy: 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 speeds up the (approximate) construction of the offset polygon and the
application of set operations on such polygons. The function returns an application of set operations on such polygons. The function returns an
object of the nested type 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 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 offset may not be simple and may contain holes, whose boundary is also comprised
of line segments and circular arcs). of line segments and circular arcs).
@ -347,7 +340,7 @@ of line segments and circular arcs).
\image html ex_offset.gif \image html ex_offset.gif
<b>The offset computation performed by the example programs <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 The input polygon is shaded and the boundary of its
offset is drawn in a thick black line.</b></center> 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 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. types provided by the <span class="textsc">Core</span> library is the preferred option.
The function returns an object of the nested type 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 documentation of the Boolean Set-Operations package for more details
on the traits-class adapter `Gps_traits_2`), which represented the on the traits-class adapter `Gps_traits_2`), which represented the
exact offset polygon. exact offset polygon.
The following example demonstrates the construction of the offset of The following example demonstrates the construction of the offset of
the same polygon that serves as an input for the example program \ref the same polygon that serves as an input for the example program
approx_offset.cpp, presented in the previous subsection (see also \ref Minkowski_sum_2/approx_offset.cpp, presented in the previous
Figure \ref mink_figex_offset). Note that the resulting polygon is subsection (see also Figure \ref mink_figex_offset).
smaller than the one generated by the approximated-offset function 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 (recall that each irrational line segment in this case is approximated
by two rational line segments), but the offset computation is by two rational line segments), but the offset computation is
considerably slower: 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 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 error bounded by \f$ \varepsilon\f$. The function returns its output via the
output iterator `oi`, whose value-type must be 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. the polygons that approximates the inset polygon.
\cgalexample{Minkowski_sum_2/approx_inset.cpp} \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 output iterator `oi`. The `traits` parameter should be an instance of
an arrangement-traits class that is capable of handling conic arcs in an an arrangement-traits class that is capable of handling conic arcs in an
exact manner, whereas `oi`'s value-type must be 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} \cgalexample{Minkowski_sum_2/exact_inset.cpp}

View File

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

View File

@ -38,13 +38,13 @@ namespace CGAL {
specifed, yet. Do not use any other than the default types for these two specifed, yet. Do not use any other than the default types for these two
template parameters. template parameters.
\sa `CGAL::Nef_polyhedron_3<Traits>::Vertex` \sa `CGAL::Nef_polyhedron_3::Vertex`
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge` \sa `CGAL::Nef_polyhedron_3::Halfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::Halffacet` \sa `CGAL::Nef_polyhedron_3::Halffacet`
\sa `CGAL::Nef_polyhedron_3<Traits>::Volume` \sa `CGAL::Nef_polyhedron_3::Volume`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge` \sa `CGAL::Nef_polyhedron_3::SHalfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfloop` \sa `CGAL::Nef_polyhedron_3::SHalfloop`
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace` \sa `CGAL::Nef_polyhedron_3::SFace`
\sa `CGAL::Nef_polyhedron_S2<Traits>` \sa `CGAL::Nef_polyhedron_S2<Traits>`
\sa `CGAL::Polyhedron_3<Traits>` \sa `CGAL::Polyhedron_3<Traits>`
@ -87,10 +87,10 @@ public:
There is no need for a user to create a `Halfedge` explicitly. The There is no need for a user to create a `Halfedge` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed halfedges internally. class `Nef_polyhedron_3<Traits>` manages the needed halfedges internally.
\sa `CGAL::Nef_polyhedron_3<Traits>::Vertex` \sa `CGAL::Nef_polyhedron_3::Vertex`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge` \sa `CGAL::Nef_polyhedron_3::SHalfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace` \sa `CGAL::Nef_polyhedron_3::SFace`
\sa `CGAL::Nef_polyhedron_S2<Traits>::Sphere_point` \sa `CGAL::Nef_polyhedron_S2::Sphere_point`
*/ */
class Halfedge { class Halfedge {
@ -193,8 +193,8 @@ public:
of these assignment works out, the member functions `is_shalfedge()` of these assignment works out, the member functions `is_shalfedge()`
and `is_shalfloop()` are provided. and `is_shalfloop()` are provided.
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge` \sa `CGAL::Nef_polyhedron_3::SHalfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfloop` \sa `CGAL::Nef_polyhedron_3::SHalfloop`
*/ */
@ -277,9 +277,9 @@ public:
There is no need for a user to create a `Halffacet` explicitly. The There is no need for a user to create a `Halffacet` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed halffacets internally. class `Nef_polyhedron_3<Traits>` manages the needed halffacets internally.
\sa `CGAL::Nef_polyhedron_3<Traits>::Volume` \sa `CGAL::Nef_polyhedron_3::Volume`
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge` \sa `CGAL::Nef_polyhedron_3::Halfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge` \sa `CGAL::Nef_polyhedron_3::SHalfedge`
*/ */
@ -369,9 +369,9 @@ public:
of these assignment works out, the member functions `is_svertex()`, of these assignment works out, the member functions `is_svertex()`,
`is_shalfedge()` and `is_shalfloop()` are provided. `is_shalfedge()` and `is_shalfloop()` are provided.
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge` \sa `CGAL::Nef_polyhedron_3::Halfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge` \sa `CGAL::Nef_polyhedron_3::SHalfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfloop` \sa `CGAL::Nef_polyhedron_3::SHalfloop`
*/ */
@ -463,8 +463,8 @@ public:
There is no need for a user to create a `SFace` explicitly. The There is no need for a user to create a `SFace` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed sfaces internally. class `Nef_polyhedron_3<Traits>` manages the needed sfaces internally.
\sa `CGAL::Nef_polyhedron_3<Traits>::Vertex` \sa `CGAL::Nef_polyhedron_3::Vertex`
\sa `CGAL::Nef_polyhedron_3<Traits>::Volume` \sa `CGAL::Nef_polyhedron_3::Volume`
*/ */
@ -581,10 +581,10 @@ public:
There is no need for a user to create a `SHalfedge` explicitly. The There is no need for a user to create a `SHalfedge` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed shalfedges internally. class `Nef_polyhedron_3<Traits>` manages the needed shalfedges internally.
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge` \sa `CGAL::Nef_polyhedron_3::Halfedge`
\sa `CGAL::Nef_polyhedron_3<Traits>::Halffacet` \sa `CGAL::Nef_polyhedron_3::Halffacet`
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace` \sa `CGAL::Nef_polyhedron_3::SFace`
\sa `CGAL::Nef_polyhedron_S2<Traits>::Sphere_circle` \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 There is no need for a user to create a `SHalfloop` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed shalfloops internally. class `Nef_polyhedron_3<Traits>` manages the needed shalfloops internally.
\sa `CGAL::Nef_polyhedron_3<Traits>::Halffacet` \sa `CGAL::Nef_polyhedron_3::Halffacet`
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace` \sa `CGAL::Nef_polyhedron_3::SFace`
\sa `CGAL::Nef_polyhedron_S2<Traits>::Sphere_point` \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 There is no need for a user to create a `Volume` explicitly. The
class `Nef_polyhedron_3<Traits>` manages the needed volumes internally. 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 the geometric primitives in the original domain. This can be
controlled using the enum `Iterator_type`. 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_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_small.jpg" align=middle alt="UNIQUE">
<img border=0 src="./it_UNIQUE_COVER_DOMAIN_small.jpg" align=middle alt="UNIQUE_COVER_DOMAIN"> <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 ## ## Periodic Alpha Shapes ##
It is possible to use `Periodic_3_Delaunay_triangulation_3` 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. Section \ref l1_SectPeriodicAS3D.
# Design and Implementation History # {#Periodic_3_triangulation_3Design} # 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. Teillaud.
The package follows the design of the 3D Triangulations package The package follows the design of the 3D Triangulations package
(see Chapter \ref chapterTriangulation3). (see Chapter \ref Chapter_3D_Triangulations).
*/ */
} /* namespace CGAL */ } /* 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). and for the triangulation data structure (Tds).
*/ */
template< typename Gt, typename Tds > template< typename Gt,
class Point_set_2 { typename Tds = Triangulation_data_structure_2<
Triangulation_vertex_base_2<Gt> >
>
class Point_set_2 : public Delaunay_triangulation_2<Gt,Tds> {
public: public:
/// \name Types /// \name Types
@ -47,22 +50,22 @@ typedef Hidden_type Triangulation;
/*! /*!
the size type of the underlying 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. the vertex type of the underlying triangulation.
*/ */
typedef Hidden_type Triangulation::Vertex; typedef Triangulation::Vertex Vertex;
/*! /*!
the edge type of the underlying triangulation. the edge type of the underlying triangulation.
*/ */
typedef Hidden_type Triangulation::Edge; typedef Triangulation::Edge Edge;
/*! /*!
handles to vertices. 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. \returns `true` on success.
\pram stream output stream. \param stream output stream.
\param first iterator range over the input points. \param first iterator range over the input points.
\param point_pmap property map `ForwardIterator` -> `Point_3`. \param point_pmap property map `ForwardIterator` -> `Point_3`.
\param normal_pmap property map `ForwardIterator` -> `Vector_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 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. 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. \pre k \f$ >\f$= 2.
\tparam InputIterator iterator over input points. \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 points; 4) Smoothing to reduce noise in the input data; 5) Normal
estimation and orientation when the normals are not already provided estimation and orientation when the normals are not already provided
by the acquisition device; and 6) Surface reconstruction. Chapter by the acquisition device; and 6) Surface reconstruction. Chapter
`Surface_reconstruction_points_3` \ref \ref Chapter_Surface_Reconstruction_from_Point_Sets "Surface Reconstruction from Point Sets"
chapsurface_reconstruction_points_3 deals with surface reconstruction deals with surface reconstruction from point sets with normal attributes.
from point sets with normal attributes.
\anchor Point_set_processing_3figpipeline \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)." \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 Function `CGAL::mst_orient_normals()` orients the normals of a set of
points with unoriented normals using the method described by Hoppe et points with unoriented normals using the method described by Hoppe et
al. in <I>Surface reconstruction from unorganized points</I> \cite al. in <I>Surface reconstruction from unorganized points</I> \cite cgal:hddms-srup-92.
cgal:hddms-srup-92. More specifically, this method constructs a More specifically, this method constructs a
Riemannian graph over the input points (the graph of the `k` Riemannian graph over the input points (the graph of the `k`
nearest neighbor points) and propagates a seed normal orientation nearest neighbor points) and propagates a seed normal orientation
within a minimum spanning tree computed over this graph. The result is 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. 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. For example, the algorithms of chapters \ref
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> >`. 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: 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 ## ## 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. 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 ## ## 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. 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 ## ## 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. 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 */ } /* namespace CGAL */

View File

@ -1,6 +1,6 @@
/*! /*!
\example Property_map/remove_outliers_example.cpp \example Point_set_processing_3/remove_outliers_example.cpp
\example Property_map/read_write_xyz_point_set_example.cpp \example Point_set_processing_3/read_write_xyz_point_set_example.cpp
\example Property_map/average_spacing_example.cpp \example Point_set_processing_3/average_spacing_example.cpp
\example Property_map/property_map.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 <TT>demo/Polyhedron_IO/</TT>. We show an example converting OFF input
into VRML 1.0 output. into VRML 1.0 output.
\cgalexample{Polyhedron/polyhedron2vrml.cpp} \cgalexample{Polyhedron_IO/polyhedron2vrml.cpp}
# Extending Vertices, Halfedges, and Facets # {#PolyhedronExtending} # 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_color.cpp
\example Polyhedron/polyhedron_prog_cube.cpp \example Polyhedron/polyhedron_prog_cube.cpp
\example Polyhedron/polyhedron_prog_incr_builder.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 For a given `Polynomial_d` the function `canonicalize` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `compare` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `degree` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `degree_vector` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `differentiate` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `evaluate_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `evaluate` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `gcd_up_to_constant_factor` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `get_coefficient` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `get_innermost_coefficient` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `innermost_leading_coefficient` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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 For more details see the concept
`PolynomialTraits_d::InnermostLeadingCoefficient`. `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 For a given `Polynomial_d` the function `integral_division_up_to_constant_factor` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `invert` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `is_square_free` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `is_zero_at_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `is_zero_at` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `leading_coefficient` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `make_square_free` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `move` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `multivariate_content` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `negate` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 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 \advanced For the \f$ i\f$-th subsequence of \f$ I\f$, define
\f$ \f$\epsilon_i:=<TD class="math">
<TABLE CELLSPACING=5 > \f[
<TR> \epsilon_i:=\begin{array}{cc}
<TD ALIGN=CENTER NOWRAP> 0 & \mbox{if $k$ is odd},\\
0 (-1)^{k/2}\mathrm{sign}(ab) & \mbox{if $k$ is even}.
<TD ALIGN=CENTER NOWRAP> \end{array}
<span class="mbox">if \f$ k\f$ is odd</span>, \f]
<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$
\advanced For \f$ f\in\mathbb{R}[x]\f$ with \f$ \deg f=n\f$, we have: \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] \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 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 \advanced For the \f$ i\f$-th subsequence of \f$ I\f$, define
\f$ \f$\epsilon_i:=<TD class="math">
<TABLE CELLSPACING=5 > \f[
<TR> \epsilon_i:=\begin{array}{cc}
<TD ALIGN=CENTER NOWRAP> 0 & \mbox{if $k$ is odd},\\
0 (-1)^{k/2}\mathrm{sign}(ab) & \mbox{if $k$ is even}.
<TD ALIGN=CENTER NOWRAP> \end{array}
<span class="mbox">if \f$ k\f$ is odd</span>, \f]
<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$
\advanced For \f$ f\in\mathbb{R}[x]\f$ with \f$ \deg f=n\f$, we have: \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] \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 For a given `Polynomial_d` the function `permute` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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$ computes the principal Sturm-Habicht coefficients of \f$ f\f$
with respect to the outermost variable. Each element is of type 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 For a given `Polynomial_d` the function `principal_sturm_habicht_sequence` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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$, computes the principal subresultants of \f$ p\f$ and \f$ q\f$,
with respect to the outermost variable. Each element is of type 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 For a given `Polynomial_d` the function `principal_subresultants` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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 For a given `Polynomial_d` the function `pseudo_division` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `pseudo_division_quotient` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `pseudo_division_remainder` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `resultant` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `scale_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `scale` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `shift` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `sign_at_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `sign_at` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `square_free_factorize` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `square_free_factorize` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `square_free_factorize_up_to_constant_factor` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `substitute_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `substitute` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `swap` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `total_degree` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `translate_homogeneous` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `translate` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `univariate_content` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 For a given `Polynomial_d` the function `univariate_content_up_to_constant_factor` adapts the
according functor in `Polynomial_traits_d<Polynomial_d>`. 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`. 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 ::Polynomial_d
\sa \ref ::PolynomialTraits_d \sa \ref ::PolynomialTraits_d
\sa \ref ::PolynomialTraits_d::SubstituteHomogeneous \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 ::Polynomial_d
\sa \ref ::PolynomialTraits_d \sa \ref ::PolynomialTraits_d
\sa \ref ::PolynomialTraits_d::Substitute \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 \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: algebraic structure of ::Innermost_coefficient_type:
Innermost_coefficient_type | %Polynomial_d Innermost_coefficient_type | %Polynomial_d
---------------------------------|-------------------------------- ---------------------------------|--------------------------------
::IntegralDomainWithoutDivision | ::IntegralDomainWithoutDivision ::IntegralDomainWithoutDivision | ::IntegralDomainWithoutDivision
@ -39,9 +37,6 @@ coefficient is a Field the polynomial is model of EuclideanRing.
*/ */
class Polynomial_d { class Polynomial_d {
public:
/// @}
}; /* end Polynomial_d */ }; /* 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 According to these two different views the traits class is required to provide
two different coefficient types: two different coefficient types:
<UL> <UL>
<LI>`CGAL::Polynomial_traits_d<Polynomial_d>::Coefficient_type` <LI>`CGAL::Polynomial_traits_d::Coefficient_type` representing \f$ R[x_0,\dots,x_{d-2}]\f$.
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$.
<LI>`CGAL::Polynomial_traits_d<Polynomial_d>::Innermost_coefficient_type`
representing the base ring \f$ R\f$.
</UL> </UL>
Another important type which is introduced by this package is Another important type which is introduced by this package is
@ -123,15 +121,15 @@ refines `IntegralDomainWithoutDivision` which in turn refines
constant polynomials. constant polynomials.
In general a polynomial is constructed using the functor 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: `PolynomialTraits_d::ConstructPolynomial`. Basically there are two options:
<UL> <UL>
<LI>The polynomial is constructed from an iterator range with value type <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 where the \f$ begin\f$ iterator refers to the constant term
(constant with respect to the outermost variable). (constant with respect to the outermost variable).
<LI>The polynomial is constructed from an iterator range with value type <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 where each pair defines the coefficient for the monomial defined by
the exponent vector. the exponent vector.
</UL> </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 the polynomials representing the different variables and to obtain the
final polynomial using final polynomial using
algebraic expressions. The most elegant way to construct a certain variable is 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`. `PolynomialTraits_d::Shift`.
## Example ## ## 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 Example
-------------- --------------
\ref print_first_lp.cpp \ref QP_solver/print_first_lp.cpp
\sa The concept `LinearProgram` \sa The concept `LinearProgram`
@ -48,7 +48,7 @@ Output operators are defined for all entry types of `lp`.
Example Example
-------------- --------------
\ref print_first_nonnegative_lp.cpp \ref QP_solver/print_first_nonnegative_lp.cpp
\sa The concept `NonnegativeLinearProgram` \sa The concept `NonnegativeLinearProgram`
@ -76,7 +76,7 @@ Output operators are defined for all entry types of `qp`.
Example Example
-------------- --------------
\ref print_first_nonnegative_qp.cpp \ref QP_solver/print_first_nonnegative_qp.cpp
\sa The concept `NonnegativeQuadraticProgram` \sa The concept `NonnegativeQuadraticProgram`
@ -103,7 +103,7 @@ Output operators are defined for all entry types of `qp`.
Example Example
-------------- --------------
\ref print_first_qp.cpp \ref QP_solver/print_first_qp.cpp
\sa The concept `QuadraticProgram` \sa The concept `QuadraticProgram`
*/ */
@ -147,7 +147,7 @@ with exact number type `ET`.
Example Example
-------------- --------------
\ref first_lp.cpp \ref QP_solver/first_lp.cpp
\models `Quadratic_program<NT>` \models `Quadratic_program<NT>`
\models `Quadratic_program_from_mps<NT>` \models `Quadratic_program_from_mps<NT>`
@ -194,9 +194,9 @@ with exact number type `ET`.
Example 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<NT>`
\sa `Quadratic_program_from_mps<NT>` \sa `Quadratic_program_from_mps<NT>`
\sa `Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>` \sa `Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
@ -242,9 +242,9 @@ with exact number type `ET`.
Example 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<NT>`
\sa `Quadratic_program_from_mps<NT>` \sa `Quadratic_program_from_mps<NT>`
\sa `Nonnegative_quadratic_program_from_iterators<A_it, B_it, R_it, D_it, C_it>` \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 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<NT>`
\sa `Quadratic_program_from_mps<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>` \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 Example
-------------- --------------
\ref first_lp_from_iterators.cpp \ref QP_solver/first_lp_from_iterators.cpp
The following example for the simpler model The following example for the simpler model
`Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>` `Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
should give you a flavor of the use of this should give you a flavor of the use of this
model in practice. 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 `LinearProgram`
\sa `Quadratic_program<NT>` \sa `Quadratic_program<NT>`
@ -119,9 +119,9 @@ public:
The following example demonstrates the typical usage of makers The following example demonstrates the typical usage of makers
with the simpler function `make_nonnegative_linear_program_from_iterators`. 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>` \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 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>` \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 The following example demonstrates the typical usage of makers
with the simpler function `make_nonnegative_linear_program_from_iterators`. 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>` \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 The following example demonstrates the typical usage of makers
with the simpler function `make_nonnegative_linear_program_from_iterators`. 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>` \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 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 `NonnegativeLinearProgram`
\sa `Quadratic_program<NT>` \sa `Quadratic_program<NT>`
@ -402,16 +402,16 @@ public:
Example Example
-------------- --------------
\ref first_nonnegative_qp_from_iterators.cpp \ref QP_solver/first_nonnegative_qp_from_iterators.cpp
The following example for the simpler model The following example for the simpler model
`Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>` `Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
should give you a flavor of the use of this should give you a flavor of the use of this
model in practice. 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 `NonnegativeQuadraticProgram`
\sa `Quadratic_program<NT>` \sa `Quadratic_program<NT>`
@ -491,16 +491,16 @@ public:
Example Example
-------------- --------------
\ref first_qp_from_iterators.cpp \ref QP_solver/first_qp_from_iterators.cpp
The following example for the simpler model The following example for the simpler model
`Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>` `Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
should give you a flavor of the use of this should give you a flavor of the use of this
model in practice. 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 `QuadraticProgram`
\sa `Quadratic_program<NT>` \sa `Quadratic_program<NT>`
@ -588,13 +588,13 @@ public:
Example 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<NT>`
\sa `Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>` \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 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 `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>` \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 Example
-------------- --------------
\ref first_qp.cpp \ref QP_solver/first_qp.cpp
Terminology Terminology
-------------- --------------
@ -145,7 +145,7 @@ typedef Hidden_type Unboundedness_certificate_iterator;
/// functions `solve_quadratic_program`, `solve_linear_program`, /// functions `solve_quadratic_program`, `solve_linear_program`,
/// `solve_nonnegative_quadratic_program`, and /// `solve_nonnegative_quadratic_program`, and
/// `solve_nonnegative_linear_program`. /// `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 /// 'important' variables (the ones not attaining one of their
/// bounds), and 'important' constraints (the ones being satisfied /// bounds), and 'important' constraints (the ones being satisfied
/// with equality). The following methods grant access to them. \ref /// 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 /// done automatically after the solution of the program, see
/// `Quadratic_program_options`. If the check fails, a logfile is /// `Quadratic_program_options`. If the check fails, a logfile is
/// generated that contains the details, and an error message is /// generated that contains the details, and an error message is
/// written to `std::cerr` (see \ref cycling.cpp for an example that /// written to `std::cerr` (see \ref QP_solver/cycling.cpp for an example that
/// uses this option). \ref first_qp.cpp \ref first_lp.cpp \ref /// uses this option). \ref QP_solver/first_qp.cpp \ref QP_solver/first_lp.cpp \ref
/// first_nonnegative_qp.cpp \ref first_nonnegative_lp.cpp /// 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 and since \f$D\f$ is positive semidefinite, we have
\f$(\qpx-\qpx^*)^TD(\qpx-\qpx^*)\geq 0\f$ and the lemma follows. \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_certificate_iterator
optimality_certifcate_begin() const; optimality_certifcate_begin() const;
@ -519,7 +519,7 @@ that there is a feasible solution \f$\qpx\f$. Then we get
\f] \f]
and this is the desired contradiction \f$0>0\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_iterator
infeasibility_certificate_begin() const; 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 so that a nonnegative program results, and a linear program is
obtained by simply not inserting any \f$ D\f$-entries. Even in the obtained by simply not inserting any \f$ D\f$-entries. Even in the
iterator-based approach (see 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 and nonnegative programs can easily be defined through suitable
`Const_oneset_iterator<T>`-style iterators. `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 according to the three ways for constructing a program that we have
already discussed in Section \ref secQPfirst. 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 In all cases, the output is
\verbatim \verbatim
@ -459,11 +459,11 @@ variable values:
1: 3/1 1: 3/1
\endverbatim \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 ## ## 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 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 The output will always be
\verbatim \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 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 as an argument to the solving function. Here is an alternative
version of 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 that shows how this works. In effect, you get shorter and more
readable code. 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 There is also the concept of an important constraint: this is
typically a constraint in the system \f$ A\qpx\qprel\qpb\f$ typically a constraint in the system \f$ A\qpx\qprel\qpb\f$
that is satisfied with equality at \f$ \qpx^*\f$. Program 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 shows how these can be accessed, using the iterators
`basic_constraint_indices_begin()` and `basic_constraint_indices_begin()` and
`basic_constraint_indices_end()`. `basic_constraint_indices_end()`.
@ -666,8 +666,8 @@ Lemma.
There are similar certificates for optimality and unboundedness There are similar certificates for optimality and unboundedness
that you can see in action in the programs that you can see in action in the programs
\ref optimality_certificate.cpp and \ref QP_solver/optimality_certificate.cpp and
\ref unboundedness_certificate.cpp. \ref QP_solver/unboundedness_certificate.cpp.
The underlying variants of Farkas Lemma are somewhat more The underlying variants of Farkas Lemma are somewhat more
complicated, due to the mixed relations in \f$ \qprel\f$ and the general complicated, due to the mixed relations in \f$ \qprel\f$ and the general
bounds. The certificate section of `Quadratic_program_solution<ET>` 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 no dramatic effect on the performance, so in that case you might as well
switch to `CGAL::QP_PARTIAL_DANTZIG` switch to `CGAL::QP_PARTIAL_DANTZIG`
to be safe from the issue described here (see 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). for an example that shows how to change the pricing strategy).
\subsection secQPcustomizationcycling The Solver Internally Cycles \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 generic algorithms, iterators, functor adaptors for binding and swapping
arguments and for composition, functors for projection and creation and arguments and for composition, functors for projection and creation and
adaptor classes around iterators and circulators. See also circulators in 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. 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, 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 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 implementers. They are not intended to be used by users of the
library. library.
\section secchecks Checks # Checks # {#secchecks}
Much of the \cgal code contains checks. Much of the \cgal code contains checks.
For example, all checks used in the kernel code are prefixed by For example, all checks used in the kernel code are prefixed by

View File

@ -8,7 +8,7 @@ namespace CGAL {
\autotoc \autotoc
\authors Hans Tangelder and Andreas Fabri \authors Hans Tangelder and Andreas Fabri
# Introduction # {#Spatial_searching}Introduction} # Introduction # {#Spatial_searchingIntroduction}
The spatial searching package implements exact and approximate The spatial searching package implements exact and approximate
distance browsing by providing implementations of algorithms 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/circular_query.cpp
\example Spatial_searching/distance_browsing.cpp \example Spatial_searching/distance_browsing.cpp
\example Spatial_searching/fuzzy_range_query.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 `StraightSkeleton_2` concept which is the class
type used to represent a straight skeleton. 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 ::StraightSkeleton_2
\models ::DefaultConstructible \models ::DefaultConstructible
@ -17,15 +21,11 @@ It inherits from `HalfedgeDS_vector<Traits,Items,Alloc>`
\sa `StraightSkeletonVertex_2` \sa `StraightSkeletonVertex_2`
\sa `StraightSkeletonHalfedge_2` \sa `StraightSkeletonHalfedge_2`
\sa `StraightSkeleton_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 > template< typename Traits, typename Items, typename Alloc >
class Straight_skeleton_2 { class Straight_skeleton_2 : public HalfedgeDS_vector<Traits,Items,Alloc> {
public: 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>. 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 \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)." \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 \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)" \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 ## ## 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. Each offset polygon has the same orientation as the source polygon.
\anchor Offsets \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 ## ## 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. 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 \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" \image html complex_skeleton.png "Straight skeleton of a complex shaggy contour"
\anchor MoreSLS \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)." \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 ## ## Angular Bisecting Lines and Offset Bisectors ##
@ -246,7 +238,6 @@ Contour vertices have time zero.
\anchor Simplepolyoffsets \anchor Simplepolyoffsets
\image latex fig6 "Straight Skeleton Data Structure" width=12cm
\image html fig6.png "Straight Skeleton Data Structure" width=12cm \image html fig6.png "Straight Skeleton Data Structure" width=12cm
# API # {#Straight_skeleton_2API} # 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 \anchor Exterior
\image latex exterior_skeleton
\image latex exterior_offset
\image html exterior_skeleton.png \image html exterior_skeleton.png
\image html exterior_offset.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 \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); 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 \image html CCBorderMask.png
\models ::PQQMask \models ::PQQMask_3
\sa `CGAL::Subdivision_method_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 \image html DSCornerMask.png
\models ::DQQMask \models ::DQQMask_3
\sa `CGAL::Subdivision_method_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 \image html LoopBorderMask.png
\models ::PTQMask \models ::PTQMask_3
\sa `CGAL::Subdivision_method_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` \tparam Polyhedron_3 must be a `CGAL::Polyhedron_3`
instantiated with a %Cartesian kernel, which defines the `Point_3` for the vertices. instantiated with a %Cartesian kernel, which defines the `Point_3` for the vertices.
\models ::Sqrt3Mask \models ::Sqrt3Mask_3
\sa `CGAL::Subdivision_method_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 \mainpage Triangulated Surface Mesh Simplification
\anchor Chapter_Triangulated_Surface_Mesh_Simplification \anchor Chapter_Triangulated_Surface_Mesh_Simplification
\anchor chaptermeshsimplification
\autotoc \autotoc
\authors Fernando Cacciola \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, of functions and traits, making it easy to adapt any concrete surface type,
even if it is not a halfedge data structure at all. even if it is not a halfedge data structure at all.
In particular, the concept definition follows the design of the 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. \cite cgal:sll-bgl-02.
The design is <A HREF="http://en.wikipedia.org/wiki/Policy-based_design"><I>policy-based</I></A> 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 \mainpage Surface Reconstruction from Point Sets
\anchor Chapter_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 \authors Pierre Alliez, Laurent Saboret, Ga&euml;l Guennebaud

View File

@ -13,7 +13,7 @@ requirements depending on the triangulation class.
At the base level, At the base level,
(see Sections \ref Section_2D_Triangulations_Software_Design (see Sections \ref Section_2D_Triangulations_Software_Design
and \ref 2D_TDS_default), and \ref 2D_TDS_default ),
a face stores handles a face stores handles
on its three vertices and on the three neighboring faces. on its three vertices and on the three neighboring faces.
The vertices and neighbors are indexed 0,1 and 2. 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 This mechanism requires that the base class provides
a templated nested class `Rebind_TDS` that a templated nested class `Rebind_TDS` that
itself provides itself provides
the subtype `Rebind_TDS<TDS2>::Other` the subtype `Rebind_TDS::Other`
which is the <I>rebound</I> version of the base class. which is the <I>rebound</I> version of the base class.
This <I>rebound</I> base class is the class This <I>rebound</I> base class is the class
that the `CGAL::Triangulation_data_structure_2` 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 This mechanism requires that the base class provides
a templated nested class `Rebind_TDS` that a templated nested class `Rebind_TDS` that
itself provides itself provides
the subtype `Rebind_TDS<TDS2>::Other` the subtype `Rebind_TDS::Other`
which is the <I>rebound</I> version of the base class. which is the <I>rebound</I> version of the base class.
This <I>rebound</I> base class is the class This <I>rebound</I> base class is the class
that the `CGAL::Triangulation_data_structure_2` 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 `CGAL::Triangulation_data_structure_2<Vb,Fb>` has two template
parameters. The class `CGAL::Triangulation_data_structure_2<Vb,Fb>` parameters. The class `CGAL::Triangulation_data_structure_2<Vb,Fb>`
derives its `Vertex` and `Face` types from the two template parameters 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 If the triangulation data structure is used alone, these parameters
have to be instantiated by models of the concepts 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 If the triangulation data structure is plugged into a triangulation
class, the parameters have to be instantiated by models of different class, the parameters have to be instantiated by models of different
refining concepts according to the actual type of the triangulation. refining concepts according to the actual type of the triangulation.
These refining concepts and their models are described in Chapter \ref These refining concepts and their models are described in Chapter
ref_chapter_2D_Triangulations. \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 `Triangulation_euclidean_traits_xz_3<K>` to deal with projections on
the `xz`- or the `yz`-plane, respectively. the `xz`- or the `yz`-plane, respectively.
\sa \ref CGAL/Triangulation_euclidean_traits_xz_3.h \sa `CGAL/Triangulation_euclidean_traits_xz_3.h`
\sa \ref CGAL/Triangulation_euclidean_traits_yz_3.h \sa `CGAL/Triangulation_euclidean_traits_yz_3.h`
*/ */
template< typename K > 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 It is parameterized by base classes for vertices and cells which have to match
the requirements for the concepts `TriangulationDSCellBase_3` and 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 They have the default values `Triangulation_ds_vertex_base_3<>` and
`Triangulation_ds_cell_base_3<>` respectively. `Triangulation_ds_cell_base_3<>` respectively.

View File

@ -115,8 +115,7 @@ public:
/// @{ /// @{
/*! /*!
<I>Optional for the triangulation data <I>Optional for the triangulation data structure alone</I>.
structure alone.</I>
*/ */
typedef Hidden_type Point; 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 Two kinds of flips exist for a three-dimensional triangulation. They
are reciprocal. To be flipped, an edge must be incident to three are reciprocal. To be flipped, an edge must be incident to three
tetrahedra. During the flip, these three tetrahedra disappear and two 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 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. On the right, the facet shared by the two new tetrahedra is
shaded. 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, the geometric versions typically used by the geometric layer,
`Triangulation_vertex_base_3`, and `Triangulation_cell_base_3`). `Triangulation_vertex_base_3`, and `Triangulation_cell_base_3`).
<LI> write his own base classes following the requirements given by the <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> </UL>
\subsection tds3cyclic Cyclic Dependency \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 The following example shows how to construct a 3D triangulation data
structure by inserting vertices. structure by inserting vertices.
\cgalexample{TDS_3/tds.cpp} \cgalexample{Triangulation_3/tds.cpp}
## Cross-Linking Between a 2D and a 3D Data Structures ## ## Cross-Linking Between a 2D and a 3D Data Structures ##
This example program illustrates how to setup a 2D and a 3D triangulation data 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. 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} # 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 /*! \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. 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 \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 provided, and the place where the user can insert his own vertex and/or cell
base classes. base classes.
\anchor T3figlayers
\image html design.gif "Triangulation software design." \image html design.gif "Triangulation software design."
The design of the triangulation data structure gives the possibility to store 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> <TD ALIGN=RIGHT NOWRAP>
3.8 3.8
<TD ALIGN=RIGHT NOWRAP> <TD ALIGN=RIGHT NOWRAP>
$ \infty $-loop \f$ \infty \f$-loop
<TR><TD ALIGN=LEFT NOWRAP COLSPAN=6><HR> <TR><TD ALIGN=LEFT NOWRAP COLSPAN=6><HR>
<TR> <TR>
<TD ALIGN=LEFT NOWRAP> <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
*/