mirror of https://github.com/CGAL/cgal
Do a global pass over Doxygen warnings/errors.
This commit is contained in:
parent
8e17db354a
commit
272a52ee44
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 */
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
*/
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 >
|
||||||
|
|
|
||||||
|
|
@ -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 >
|
||||||
|
|
|
||||||
|
|
@ -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 >
|
||||||
|
|
|
||||||
|
|
@ -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 >
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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>`
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
*/
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
/*!
|
/*!
|
||||||
\example CGAL_ipelets/test_grabbers.cpp
|
\example CGAL_ipelets/test_grabbers.cpp
|
||||||
|
\example CGAL_ipelets/simple_triangulation.cpp
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -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ães de Castro, Sylvain Pion, and Monique Teillaud
|
\authors Pedro Machado Manhães de Castro, Sylvain Pion, and Monique Teillaud
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
/*!
|
||||||
|
\example Circular_kernel_2/intersecting_arcs.cpp
|
||||||
|
\example Circular_kernel_2/functor_has_on_2.cpp
|
||||||
|
*/
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
*/
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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 ##
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 */
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
*/
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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`
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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">
|
||||||
|
|
|
||||||
|
|
@ -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 */
|
||||||
|
|
|
||||||
|
|
@ -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*/
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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`.
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
*/
|
||||||
|
|
@ -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 */
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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`.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 ##
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
*/
|
||||||
|
|
@ -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>`
|
||||||
|
|
|
||||||
|
|
@ -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>`
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -1,358 +0,0 @@
|
||||||
|
|
||||||
\authors Kaspar Fischer, Bernd Gärtner, Sven Schö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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
*/
|
||||||
|
|
@ -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:
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
/*!
|
||||||
|
\example Stream_lines_2/stl_regular_field.cpp
|
||||||
|
\example Stream_lines_2/stl_triangular_field.cpp
|
||||||
|
*/
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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`
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
*/
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
*/
|
||||||
|
|
@ -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ël Guennebaud
|
\authors Pierre Alliez, Laurent Saboret, Gaël Guennebaud
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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`
|
||||||
|
|
|
||||||
|
|
@ -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`
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 >
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
/*!
|
||||||
|
\example Triangulation_3/tds.cpp
|
||||||
|
\example Triangulation_3/linking_2d_and_3d.cpp
|
||||||
|
*/
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
*/
|
||||||
Loading…
Reference in New Issue