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/Concepts/HalfedgeGraph.h -text
|
||||
BGL/doc/BGL/PackageDescription.txt -text
|
||||
BGL/doc/BGL/examples.txt -text
|
||||
BGL/doc/BGL/fig/emst-detail.png -text svneol=unset#image/png
|
||||
BGL/doc/BGL/fig/emst.jpg -text svneol=unset#image/jpeg
|
||||
BGL/doc/BGL/fig/ex_bgl.gif -text svneol=unset#image/gif
|
||||
|
|
@ -1686,6 +1687,7 @@ Bounding_volumes/doc/Bounding_volumes/Concepts/MinSphereAnnulusDTraits.h -text
|
|||
Bounding_volumes/doc/Bounding_volumes/Concepts/MinSphereOfSpheresTraits.h -text
|
||||
Bounding_volumes/doc/Bounding_volumes/Concepts/RectangularPCenterTraits_2.h -text
|
||||
Bounding_volumes/doc/Bounding_volumes/PackageDescription.txt -text
|
||||
Bounding_volumes/doc/Bounding_volumes/examples.txt -text
|
||||
Bounding_volumes/doc/Bounding_volumes/fig/annulus.gif -text svneol=unset#image/gif
|
||||
Bounding_volumes/doc/Bounding_volumes/fig/annulus.pdf -text svneol=unset#application/pdf
|
||||
Bounding_volumes/doc/Bounding_volumes/fig/ball.gif -text svneol=unset#image/gif
|
||||
|
|
@ -1861,6 +1863,7 @@ Circular_kernel_2/doc/Circular_kernel_2/Concepts/CircularKernel--MakeXYMonotone_
|
|||
Circular_kernel_2/doc/Circular_kernel_2/Concepts/CircularKernel--Split_2.h -text
|
||||
Circular_kernel_2/doc/Circular_kernel_2/Concepts/CircularKernel.h -text
|
||||
Circular_kernel_2/doc/Circular_kernel_2/PackageDescription.txt -text
|
||||
Circular_kernel_2/doc/Circular_kernel_2/examples.txt -text
|
||||
Circular_kernel_2/doc/Circular_kernel_2/fig/Boolean_operation.png -text svneol=unset#image/png
|
||||
Circular_kernel_2/doc/Circular_kernel_2/fig/Boolean_operation_detail.png -text svneol=unset#image/png
|
||||
Circular_kernel_2/doc_tex/Circular_kernel_2/fig/Boolean_operation.png -text
|
||||
|
|
@ -1952,6 +1955,7 @@ Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--MakeThetaMonot
|
|||
Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Split_3.h -text
|
||||
Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel.h -text
|
||||
Circular_kernel_3/doc/Circular_kernel_3/PackageDescription.txt -text
|
||||
Circular_kernel_3/doc/Circular_kernel_3/examples.txt -text
|
||||
Circular_kernel_3/doc/Circular_kernel_3/fig/def_circles_extreme_pt.pdf -text svneol=unset#application/pdf
|
||||
Circular_kernel_3/doc/Circular_kernel_3/fig/def_circles_extreme_pt.png -text svneol=unset#image/png
|
||||
Circular_kernel_3/doc/Circular_kernel_3/fig/def_meridian.pdf -text svneol=unset#application/pdf
|
||||
|
|
@ -2834,6 +2838,7 @@ Installation/update_CHANGES -text
|
|||
Interpolation/doc/Interpolation/CGAL/Interpolation_gradient_fitting_traits_2.h -text
|
||||
Interpolation/doc/Interpolation/CGAL/Interpolation_traits_2.h -text
|
||||
Interpolation/doc/Interpolation/CGAL/Voronoi_intersection_2_traits_3.h -text
|
||||
Interpolation/doc/Interpolation/CGAL/examples.txt -text
|
||||
Interpolation/doc/Interpolation/CGAL/interpolation_functions.h -text
|
||||
Interpolation/doc/Interpolation/CGAL/natural_neighbor_coordinates_2.h -text
|
||||
Interpolation/doc/Interpolation/CGAL/regular_neighbor_coordinates_2.h -text
|
||||
|
|
@ -4688,6 +4693,7 @@ Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3Tri
|
|||
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3TriangulationDSVertexBase_3.h -text
|
||||
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/PackageDescription.txt -text
|
||||
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Periodic_3_triangulation_3.txt -text
|
||||
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/examples.txt -text
|
||||
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/fig/flips.gif -text svneol=unset#image/gif
|
||||
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/fig/flips.pdf -text svneol=unset#application/pdf
|
||||
Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/fig/it_STORED.jpg -text svneol=unset#image/jpeg
|
||||
|
|
@ -4771,6 +4777,7 @@ Point_set_processing_3/doc/Point_set_processing_3/CGAL/random_simplify_point_set
|
|||
Point_set_processing_3/doc/Point_set_processing_3/CGAL/remove_outliers.h -text
|
||||
Point_set_processing_3/doc/Point_set_processing_3/PackageDescription.txt -text
|
||||
Point_set_processing_3/doc/Point_set_processing_3/Point_set_processing_3.txt -text
|
||||
Point_set_processing_3/doc/Point_set_processing_3/examples.txt -text
|
||||
Point_set_processing_3/doc/Point_set_processing_3/fig/grid_simplification.jpg -text svneol=unset#image/jpeg
|
||||
Point_set_processing_3/doc/Point_set_processing_3/fig/introduction.jpg -text svneol=unset#image/jpeg
|
||||
Point_set_processing_3/doc/Point_set_processing_3/fig/mst_orient_normals.jpg -text svneol=unset#image/jpeg
|
||||
|
|
@ -5056,6 +5063,7 @@ Polynomial/doc/Polynomial/Concepts/PolynomialTraits_d.h -text
|
|||
Polynomial/doc/Polynomial/Concepts/Polynomial_d.h -text
|
||||
Polynomial/doc/Polynomial/PackageDescription.txt -text
|
||||
Polynomial/doc/Polynomial/Polynomial.txt -text
|
||||
Polynomial/doc/Polynomial/examples.txt -text
|
||||
Polynomial/doc/Polynomial/fig/Polynomial.png -text svneol=unset#image/png
|
||||
Polynomial/doc/Polynomial/fig/sturm_habicht_def.gif -text svneol=unset#image/gif
|
||||
Polynomial/doc/Polynomial/fig/subresultant_def.gif -text svneol=unset#image/gif
|
||||
|
|
@ -5204,7 +5212,6 @@ QP_solver/doc/QP_solver/CGAL/QP_functions.h -text
|
|||
QP_solver/doc/QP_solver/CGAL/QP_models.h -text
|
||||
QP_solver/doc/QP_solver/CGAL/QP_options.h -text
|
||||
QP_solver/doc/QP_solver/CGAL/QP_solution.h -text
|
||||
QP_solver/doc/QP_solver/Classified.txt -text
|
||||
QP_solver/doc/QP_solver/Concepts/LinearProgram.h -text
|
||||
QP_solver/doc/QP_solver/Concepts/MPSFormat.h -text
|
||||
QP_solver/doc/QP_solver/Concepts/NonnegativeLinearProgram.h -text
|
||||
|
|
@ -5682,6 +5689,7 @@ Spatial_sorting/doc/Spatial_sorting/Concepts/SpatialSortingTraits_3.h -text
|
|||
Spatial_sorting/doc/Spatial_sorting/Concepts/SpatialSortingTraits_d.h -text
|
||||
Spatial_sorting/doc/Spatial_sorting/PackageDescription.txt -text
|
||||
Spatial_sorting/doc/Spatial_sorting/Spatial_sorting.txt -text
|
||||
Spatial_sorting/doc/Spatial_sorting/examples.txt -text
|
||||
Spatial_sorting/doc/Spatial_sorting/fig/Hilbert-median.gif -text svneol=unset#image/gif
|
||||
Spatial_sorting/doc/Spatial_sorting/fig/Hilbert-median.pdf -text svneol=unset#application/pdf
|
||||
Spatial_sorting/doc/Spatial_sorting/fig/Hilbert-middle.gif -text svneol=unset#image/gif
|
||||
|
|
@ -6021,6 +6029,7 @@ Stream_lines_2/doc/Stream_lines_2/Concepts/StreamLinesTraits_2.h -text
|
|||
Stream_lines_2/doc/Stream_lines_2/Concepts/VectorField_2.h -text
|
||||
Stream_lines_2/doc/Stream_lines_2/PackageDescription.txt -text
|
||||
Stream_lines_2/doc/Stream_lines_2/Stream_lines_2.txt -text
|
||||
Stream_lines_2/doc/Stream_lines_2/examples.txt -text
|
||||
Stream_lines_2/doc/Stream_lines_2/fig/1.gif -text svneol=unset#image/gif
|
||||
Stream_lines_2/doc/Stream_lines_2/fig/1.pdf -text svneol=unset#application/pdf
|
||||
Stream_lines_2/doc/Stream_lines_2/fig/2.gif -text svneol=unset#image/gif
|
||||
|
|
@ -6065,6 +6074,7 @@ Subdivision_method_3/doc/Subdivision_method_3/Concepts/PTQMask_3.h -text
|
|||
Subdivision_method_3/doc/Subdivision_method_3/Concepts/Sqrt3Mask_3.h -text
|
||||
Subdivision_method_3/doc/Subdivision_method_3/PackageDescription.txt -text
|
||||
Subdivision_method_3/doc/Subdivision_method_3/Subdivision_method_3.txt -text
|
||||
Subdivision_method_3/doc/Subdivision_method_3/examples.txt -text
|
||||
Subdivision_method_3/doc/Subdivision_method_3/fig/CCBorderMask.pdf -text svneol=unset#application/pdf
|
||||
Subdivision_method_3/doc/Subdivision_method_3/fig/CCBorderMask.png -text svneol=unset#image/png
|
||||
Subdivision_method_3/doc/Subdivision_method_3/fig/CCSubdivision.png -text svneol=unset#image/png
|
||||
|
|
@ -6203,6 +6213,7 @@ Surface_mesh_simplification/doc/Surface_mesh_simplification/Concepts/GetPlacemen
|
|||
Surface_mesh_simplification/doc/Surface_mesh_simplification/Concepts/StopPredicate.h -text
|
||||
Surface_mesh_simplification/doc/Surface_mesh_simplification/PackageDescription.txt -text
|
||||
Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt -text
|
||||
Surface_mesh_simplification/doc/Surface_mesh_simplification/examples.txt -text
|
||||
Surface_mesh_simplification/doc/Surface_mesh_simplification/fig/Illustration-Simplification-ALL.jpg -text svneol=unset#image/jpeg
|
||||
Surface_mesh_simplification/doc/Surface_mesh_simplification/fig/Illustration-Simplification-ALL.pdf -text svneol=unset#application/pdf
|
||||
Surface_mesh_simplification/doc/Surface_mesh_simplification/fig/border_collapse1.pdf -text svneol=unset#application/pdf
|
||||
|
|
@ -6750,6 +6761,7 @@ Triangulation_3/doc/TDS_3/Concepts/TriangulationDSVertexBase_3.h -text
|
|||
Triangulation_3/doc/TDS_3/Concepts/TriangulationDataStructure_3.h -text
|
||||
Triangulation_3/doc/TDS_3/PackageDescription.txt -text
|
||||
Triangulation_3/doc/TDS_3/TriangulationDS_3.txt -text
|
||||
Triangulation_3/doc/TDS_3/examples.txt -text
|
||||
Triangulation_3/doc/TDS_3/fig/comborient.gif -text svneol=unset#image/gif
|
||||
Triangulation_3/doc/TDS_3/fig/comborient.pdf -text svneol=unset#application/pdf
|
||||
Triangulation_3/doc/TDS_3/fig/design_tds.gif -text svneol=unset#image/gif
|
||||
|
|
@ -6792,6 +6804,7 @@ Triangulation_3/doc/Triangulation_3/Concepts/TriangulationVertexBase_3.h -text
|
|||
Triangulation_3/doc/Triangulation_3/Concepts/WeightedPoint.h -text
|
||||
Triangulation_3/doc/Triangulation_3/PackageDescription.txt -text
|
||||
Triangulation_3/doc/Triangulation_3/Triangulation_3.txt -text
|
||||
Triangulation_3/doc/Triangulation_3/examples.txt -text
|
||||
Triangulation_3/doc/Triangulation_3/fig/Delaunay_3.jpg -text svneol=unset#image/jpeg
|
||||
Triangulation_3/doc/Triangulation_3/fig/HD.gif -text svneol=unset#image/gif
|
||||
Triangulation_3/doc/Triangulation_3/fig/HD.pdf -text svneol=unset#application/pdf
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ namespace CGAL {
|
|||
|
||||
\mainpage 3D Alpha Shapes
|
||||
\anchor Chapter_3D_Alpha_Shapes
|
||||
\anchor I1ChapterAlphashapes3D
|
||||
\autotoc
|
||||
\authors Tran Kai Frank Da, Sébastien Loriot, and Mariette Yvinec
|
||||
|
||||
|
|
|
|||
|
|
@ -155,10 +155,12 @@ this chapter introduces a new graph concept, the `HalfedgeGraph`.
|
|||
|
||||
## Example: Minimum Spanning Tree of a Polyhedral Surface ##
|
||||
|
||||
The example code computes the minimum spanning tree on a polyhedral surface.
|
||||
More examples can be found in Chapter \ref chaptermeshsimplification on surface mesh simplification.
|
||||
The example code computes the minimum spanning tree on a polyhedral
|
||||
surface. More examples can be found in Chapter
|
||||
\ref Chapter_Triangulated_Surface_Mesh_Simplification on surface mesh
|
||||
simplification.
|
||||
|
||||
\cgalexample{BGL/kruskal.cpp}
|
||||
\cgalexample{BGL_polyhedron_3/kruskal.cpp}
|
||||
|
||||
## Example: Using Vertices, and Edges with an ID ##
|
||||
|
||||
|
|
@ -168,7 +170,7 @@ field stored in a Polyhedron vertex.
|
|||
|
||||
The main function illustrates the access to the id() field.
|
||||
|
||||
\cgalexample{BGL/kruskal_with_stored_id.cpp}
|
||||
\cgalexample{BGL_polyhedron_3/kruskal_with_stored_id.cpp}
|
||||
|
||||
# Triangulations as Models of the Boost Graph Concept # {#BGLTriangulations}
|
||||
|
||||
|
|
@ -192,7 +194,7 @@ spanning tree algorithm on it. Because the vertex handles of the triangulation a
|
|||
in an array, we have to provide a property map that maps vertex handles to
|
||||
int's in the range `[0, t.number_of_vertices())`.
|
||||
|
||||
\cgalexample{BGL/emst.cpp}
|
||||
\cgalexample{BGL_triangulation_2/emst.cpp}
|
||||
|
||||
## Example: Storing the Vertex ID in the Vertex ##
|
||||
|
||||
|
|
@ -211,7 +213,7 @@ It is in the users responsibility to set the indices properly.
|
|||
The example further illustrates that the graph traits also works
|
||||
for the Delaunay triangulation.
|
||||
|
||||
\cgalexample{BGL/dijkstra_with_internal_properties.cpp}
|
||||
\cgalexample{BGL_triangulation_2/dijkstra_with_internal_properties.cpp}
|
||||
|
||||
# Arrangements as Models of the Boost Graph Concept # {#BGLArrangements}
|
||||
|
||||
|
|
@ -287,7 +289,7 @@ arrangement \f$ v_0\f$. Note the usage of the `Arr_vertex_index_map` and
|
|||
the `Arr_vertex_property_map` classes. The latter one, instantiated by
|
||||
the type `double` is used to map vertices to their distances from \f$ v_0\f$.
|
||||
|
||||
\cgalexample{BGL/primal.cpp}
|
||||
\cgalexample{BGL_arrangement_2/primal.cpp}
|
||||
|
||||
\subsection arr_sssecbgl_dual Example for the Dual of an Arrangement as Graph
|
||||
|
||||
|
|
@ -324,7 +326,7 @@ with an unsigned integer, marking the discover time of the face and use a
|
|||
breadth-first-search visitor to obtain these times and update the faces
|
||||
accordingly:
|
||||
|
||||
\cgalexample{BGL/dual.cpp}
|
||||
\cgalexample{BGL_arrangement_2/dual.cpp}
|
||||
|
||||
*/
|
||||
} /* namespace CGAL */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
in order to deal with a 'bad' order of the input points.
|
||||
|
||||
\cgalexample{Bounding_volumes/min_circle_2.cpp}
|
||||
\cgalexample{Min_circle_2/min_circle_2.cpp}
|
||||
|
||||
Other classes for which we provide solutions are ellipses
|
||||
(`CGAL::Min_ellipse_2<Traits>`), rectangles
|
||||
|
|
|
|||
|
|
@ -130,12 +130,12 @@ points and a \f$ 1.01\f$-approximation of \f$ \mel(P)\f$ as an EPS-file, which
|
|||
you can view using <TT>gv</TT>, for instance. (In both examples you can
|
||||
change the variables `n` and `d` to experiment with the code.)
|
||||
|
||||
\cgalexample{Bounding_volumes/ellipsoid.cpp}
|
||||
\cgalexample{Approximate_min_ellipsoid_d/ellipsoid.cpp}
|
||||
|
||||
The second program outputs the approximation in a format suitable
|
||||
for display in Maplesoft's Maple.
|
||||
|
||||
\cgalexample{Bounding_volumes/ellipsoid_for_maple.cpp}
|
||||
\cgalexample{Approximate_min_ellipsoid_d/ellipsoid_for_maple.cpp}
|
||||
|
||||
*/
|
||||
template< typename Traits >
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ for validity each takes linear time.
|
|||
To illustrate the creation of `Min_circle_2` and to show that
|
||||
randomization can be useful in certain cases, we give an example.
|
||||
|
||||
\cgalexample{Bounding_volumes/min_circle_2.cpp}
|
||||
\cgalexample{Min_circle_2/min_circle_2.cpp}
|
||||
|
||||
*/
|
||||
template< typename Traits >
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ To illustrate the usage of `Min_ellipse_2` and to show that randomization
|
|||
can be useful in certain cases, we give an example. The example also
|
||||
shows how the coefficents of the constructed ellipse can be accessed.
|
||||
|
||||
\cgalexample{Bounding_volumes/min_ellipse_2.cpp}
|
||||
\cgalexample{Min_ellipse_2/min_ellipse_2.cpp}
|
||||
|
||||
*/
|
||||
template< typename Traits >
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ each take linear time.
|
|||
|
||||
### Example ###
|
||||
|
||||
\cgalexample{Bounding_volumes/min_sphere_d.cpp}
|
||||
\cgalexample{Min_sphere_d/min_sphere_d.cpp}
|
||||
|
||||
*/
|
||||
template< typename Traits >
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ is not supported yet.
|
|||
|
||||
### Example ###
|
||||
|
||||
\cgalexample{Bounding_volumes/min_sphere_of_spheres_d_d.cpp}
|
||||
\cgalexample{Min_sphere_of_spheres_d/min_sphere_of_spheres_d_d.cpp}
|
||||
|
||||
*/
|
||||
template< typename Traits >
|
||||
|
|
@ -232,8 +232,9 @@ Cartesian_const_iterator center_cartesian_begin( )
|
|||
const;
|
||||
|
||||
/*!
|
||||
returns the corresponding past-the-end iterator, i.e.
|
||||
`center_cartesian_begin()+Traits::D`. \pre `minsphere` is not empty.
|
||||
returns the corresponding past-the-end iterator, i.e.\
|
||||
`center_cartesian_begin()+Traits::D`.
|
||||
\pre `minsphere` is not empty.
|
||||
*/
|
||||
Cartesian_const_iterator center_cartesian_end( )
|
||||
const;
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ The following code generates a random convex polygon
|
|||
`P` with 20 vertices and computes the minimum enclosing
|
||||
parallelogram of `P`.
|
||||
|
||||
\cgalexample{Bounding_volumes/minimum_enclosing_parallelogram_2.cpp}
|
||||
\cgalexample{Min_quadrilateral_2/minimum_enclosing_parallelogram_2.cpp}
|
||||
|
||||
*/
|
||||
|
||||
|
|
@ -124,7 +124,7 @@ The following code generates a random convex polygon
|
|||
`P` with 20 vertices and computes the minimum enclosing
|
||||
rectangle of `P`.
|
||||
|
||||
\cgalexample{Bounding_volumes/minimum_enclosing_rectangle_2.cpp}
|
||||
\cgalexample{Min_quadrilateral_2/minimum_enclosing_rectangle_2.cpp}
|
||||
|
||||
*/
|
||||
|
||||
|
|
@ -192,7 +192,7 @@ The following code generates a random convex polygon
|
|||
`P` with 20 vertices and computes the minimum enclosing
|
||||
strip of `P`.
|
||||
|
||||
\cgalexample{Bounding_volumes/minimum_enclosing_strip_2.cpp}
|
||||
\cgalexample{Min_quadrilateral_2/minimum_enclosing_strip_2.cpp}
|
||||
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -257,7 +257,7 @@ piercing rectangles \cite sw-rpppp-96.
|
|||
The following code generates a random set of ten points
|
||||
and computes its two-centers.
|
||||
|
||||
\cgalexample{Bounding_volumes/rectangular_p_center_2.cpp}
|
||||
\cgalexample{Rectangular_p_center_2/rectangular_p_center_2.cpp}
|
||||
|
||||
*/
|
||||
template < class ForwardIterator, class
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
The concept `RectangularPCenterTraits_2` defines types and operations
|
||||
needed to compute rectilinear \f$ p\f$-centers of a planar point set
|
||||
using the function `::rectangular_p_center_2`.
|
||||
using the function `CGAL::rectangular_p_center_2`.
|
||||
|
||||
\hasModel `CGAL::Rectangular_p_center_default_traits_2<K>`
|
||||
|
||||
|
|
|
|||
|
|
@ -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/simple_triangulation.cpp
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ namespace CGAL {
|
|||
|
||||
\mainpage 2D Circular Geometry %Kernel
|
||||
\anchor Chapter_2D_Circular_Geometry_Kernel
|
||||
\anchor chaptercircularkernel
|
||||
\autotoc
|
||||
|
||||
\authors Pedro Machado Manhães de Castro, Sylvain Pion, and Monique Teillaud
|
||||
|
|
|
|||
|
|
@ -6,7 +6,9 @@
|
|||
Testing whether the interiors of two curves overlap.
|
||||
|
||||
\bug There is no DoOverlap in the Linear Kernel.
|
||||
|
||||
\refines ::Kernel::DoOverlap_2
|
||||
\bug DoOverlap_2 does not exist in the Kernel.
|
||||
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
The design of `Spherical_kernel_3` is similar to the design of
|
||||
`Circular_kernel_2` (see Chapter \ref chaptercircularkernel).
|
||||
`Circular_kernel_2` (see Chapter \ref Chapter_2D_Circular_Geometry_Kernel).
|
||||
It has two template parameters:
|
||||
<UL>
|
||||
<LI> the first parameter must model the \cgal
|
||||
|
|
@ -188,7 +188,7 @@ then compared.
|
|||
# Design and Implementation History # {#Circular_kernel_3Design}
|
||||
|
||||
This package follows the 2D circular kernel package (see
|
||||
Chapter \ref chaptercircularkernel), which induced the basic
|
||||
Chapter \ref Chapter_2D_Circular_Geometry_Kernel), which induced the basic
|
||||
choices of design.
|
||||
|
||||
Julien Hazebrouck and Damien Leroy participated in a first
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
\cgalconcept
|
||||
|
||||
\refines ::Kernel::ComputeApproximateSquaredLength_3
|
||||
In addition, an object \refines ::fo of this type must provide:
|
||||
In addition, an object `fo` of this type must provide:
|
||||
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,9 @@
|
|||
|
||||
\refines ::Kernel::DoOverlap_3
|
||||
|
||||
An object \refines ::fo of this type must provide:
|
||||
\bug DoOverlap_3 does not exist in the Kernel
|
||||
|
||||
An object `fo` of this type must provide:
|
||||
*/
|
||||
class SphericalKernel::DoOverlap_3 {
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
\image html saarhull.png
|
||||
\image latex saarhull width=6.5cm
|
||||
|
||||
\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
|
||||
triangulation to get a fully dynamic computation.
|
||||
|
||||
\section secconvex_hull_3 Static Convex Hull Construction
|
||||
# Static Convex Hull Construction # {#secconvex_hull_3}
|
||||
|
||||
The function
|
||||
`::convex_hull_3` provides an
|
||||
|
|
@ -40,7 +40,7 @@ dimensionsquickhull, 3D. There are two versions of this
|
|||
function available, one that can be used when it is known that the output
|
||||
will be a polyhedron (<I>i.e.</I>, there are more than three points and
|
||||
they are not all collinear) and one that handles all degenerate cases
|
||||
and returns a `::Object`, which may be a point, a segment, a
|
||||
and returns a `Object`, which may be a point, a segment, a
|
||||
triangle, or a polyhedron. Both versions accept a range of input
|
||||
iterators defining the set of points whose convex hull is to be computed
|
||||
and a traits class defining the geometric types and predicates used in
|
||||
|
|
@ -77,15 +77,15 @@ of the convex hull.
|
|||
|
||||
# Incremental Convex Hull Construction # {#Convex_hull_3Incremental}
|
||||
|
||||
The function `::convex_hull_incremental_3` C provides an
|
||||
The function `::convex_hull_incremental_3` provides an
|
||||
interface similar to `::convex_hull_3` for the \f$ d\f$-dimensional
|
||||
incremental construction algorithm \cite cms-frric-93
|
||||
implemented by the class `::Convex_hull_d<R>` that is specialized
|
||||
implemented by the class `Convex_hull_d<R>` that is specialized
|
||||
to three dimensions. This function accepts an iterator range over a set of
|
||||
input points and returns a polyhedron, but it does not have a traits class
|
||||
in its interface. It uses the kernel
|
||||
class `Kernel` used in the polyhedron type to define an instance of the
|
||||
adapter traits class `::Convex_hull_d_traits_3<Kernel>`.
|
||||
adapter traits class `Convex_hull_d_traits_3<Kernel>`.
|
||||
|
||||
In almost all cases, the static and the dynamic version will
|
||||
be faster than the incremental convex hull algorithm (mainly
|
||||
|
|
@ -95,10 +95,10 @@ completeness and educational purposes. You should use the dynamic
|
|||
version when you need an efficient incremental convex hull algorithm.
|
||||
|
||||
To use the full functionality available with the \f$ d\f$-dimensional class
|
||||
`::Convex_hull_d<R>` in three dimensions (<I>e.g.</I>, the ability
|
||||
`Convex_hull_d<R>` in three dimensions (<I>e.g.</I>, the ability
|
||||
to insert new points and to query if a point lies in the convex hull or not),
|
||||
you can instantiate the class `::Convex_hull_d<K>` with the adapter
|
||||
traits class `::Convex_hull_d_traits_3<K>`, as shown in the following
|
||||
you can instantiate the class `Convex_hull_d<K>` with the adapter
|
||||
traits class `Convex_hull_d_traits_3<K>`, as shown in the following
|
||||
example.
|
||||
|
||||
## Example ##
|
||||
|
|
@ -108,7 +108,7 @@ example.
|
|||
# Dynamic Convex Hull Construction # {#Convex_hull_3Dynamic}
|
||||
|
||||
Fully dynamic maintenance of a convex hull can be achieved by using the
|
||||
class `::Delaunay_triangulation_3`. This class supports insertion
|
||||
class `Delaunay_triangulation_3`. This class supports insertion
|
||||
and removal of points (<I>i.e.</I>, vertices of the triangulation) and the
|
||||
convex hull edges are simply the finite edges of infinite faces.
|
||||
The following example illustrates the dynamic construction of a convex hull.
|
||||
|
|
@ -128,9 +128,9 @@ not all of them are vertices of the hull.
|
|||
|
||||
In the following, we compare the running times of the three approaches to compute 3D convex hulls.
|
||||
For the static version (using `::convex_hull_3`) and the dynamic version
|
||||
(using `::Delaunay_triangulation_3` and `::convex_hull_3_to_polyhedron_3`), the kernel
|
||||
used was `::Exact_predicates_inexact_constructions_kernel`. For the incremental version
|
||||
(using `::convex_hull_incremental_3`), the kernel used was `::Exact_predicates_exact_constructions_kernel`.
|
||||
(using `Delaunay_triangulation_3` and `::convex_hull_3_to_polyhedron_3`), the kernel
|
||||
used was `Exact_predicates_inexact_constructions_kernel`. For the incremental version
|
||||
(using `::convex_hull_incremental_3`), the kernel used was `Exact_predicates_exact_constructions_kernel`.
|
||||
|
||||
To compute the convex hull of a million of random points in a unit ball the static approach needed 1.63s, while
|
||||
the dynamic and incremental approaches needed 9.50s and 11.54s respectively.
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ The convex hull class is parameterized by a traits class that provides
|
|||
model <I>e.g.</I>, `Homogeneous<RT>` or `Cartesian<FT>` for use
|
||||
with `Convex_hull_d`, where the dimension is fixed to three.
|
||||
The validity of the computed convex hull can be checked using the
|
||||
member function `::is_valid`, which implements the algorithm
|
||||
member function `Convex_hull_d::is_valid`, which implements the algorithm
|
||||
of Mehlhorn <I>et al.</I>\cite mnssssu-cgpvg-96 to determine if
|
||||
the vertices of a given polytope constitute a strongly convex point
|
||||
set or not.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
\todo check generated documentation
|
||||
\PkgDescriptionBegin{dD Convex Hulls and Delaunay Triangulations,PkgConvexHullDSummary}
|
||||
\PkgPicture{convex_hull_d-teaser.png}
|
||||
\PkgAuthor{Susan Hert and Michael Seel}
|
||||
\PkgAuthor{Susan Hert and Michael Seel}
|
||||
\PkgDesc{This package provides functions for computing convex hulls and Delaunay triangulations in \f$ d\f$-dimensional Euclidean space.}
|
||||
\PkgSince{2.3}
|
||||
\PkgBib{cgal:hs-chdt3}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ programs, all of them computing the 2D convex hull of a set of points.
|
|||
You will find the same ideas in other
|
||||
|
||||
|
||||
# Points in a Built-in Array # {#intro_array }
|
||||
# Points in a Built-in Array # {#intro_array}
|
||||
|
||||
In the first example we have as input an array of five points.
|
||||
As the convex hull of these points is a subset of the input
|
||||
|
|
@ -45,7 +45,7 @@ point written, so the pointer difference tells us how
|
|||
many points are on the convex hull.
|
||||
|
||||
|
||||
# Points in a Vector # { #intro_vector }
|
||||
# Points in a Vector # {#intro_vector}
|
||||
|
||||
In the second example we replace the built-in array
|
||||
by a `std::vector` of the Standard Template Library.
|
||||
|
|
@ -71,7 +71,7 @@ iterator generated by the helper function
|
|||
`std::back_inserter(result)`. This output iterator does nothing when
|
||||
incremented, and calls `result.push_back(..)` on the assignment.
|
||||
|
||||
# Points in Streams # { #intro_streams }
|
||||
# Points in Streams # {#intro_streams}
|
||||
|
||||
The next example program reads a sequence of points from standard
|
||||
input `std::cin` and writes the points on the convex hull to standard
|
||||
|
|
@ -108,7 +108,7 @@ containers. If you don't know the \stl, you maybe better first
|
|||
familiarize yourself with its basic ideas.
|
||||
|
||||
|
||||
# About Traits Classes # { #intro_traits }
|
||||
# About Traits Classes # {#intro_traits}
|
||||
|
||||
If you look at the manual page of the function `CGAL::convex_hull_2()`
|
||||
and the other 2D convex hull algorithms, you see that they come in two
|
||||
|
|
@ -181,7 +181,7 @@ given by a direction, which is hardwired in the class
|
|||
|
||||
|
||||
|
||||
# Further Reading # { #intro_further }
|
||||
# Further Reading # {#intro_further}
|
||||
|
||||
We also recommend the standard text books by
|
||||
Josuttis \cite cgal:j-csl-99, or Austern \cite cgal:a-gps-98 for the
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ return type of calling the functor with an argument of type
|
|||
Much of the \cgal code contains assert statements for preconditions, and postconditions of functions
|
||||
as well as in the code. These assertions can be switched on and off per package
|
||||
and the user can change the error behaviour. For details see Section \ref secchecks
|
||||
of Chapter Chapter_STL_Extensions_for_CGAL.
|
||||
of Chapter Chapter_STL_Extensions_for_CGAL.
|
||||
|
||||
\section seccgal_version Identifying the Version of CGAL
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ namespace for the XML file to be processed properly. -->
|
|||
<item>./tags/STL_Extension.tag=../../CGAL.CGAL.STL-Extensions-for-CGAL/html</item>
|
||||
<item>./tags/Algebraic_foundations.tag=../../CGAL.CGAL.Algebraic-Foundations/html</item>
|
||||
<item>./tags/Circulator.tag=../../CGAL.CGAL.Handles-and-Circulators/html</item>
|
||||
<item>./tags/Stream_support.tag=../../CGAL.CGAL.IO-Streams/html</item>
|
||||
</list>
|
||||
<string name="LAYOUT_FILE">DoxygenLayoutPackage.xml</string>
|
||||
<list name="ALIASES" append="true">
|
||||
|
|
@ -51,6 +52,7 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="EXAMPLE_PATH">../STL_Extension/examples</string>
|
||||
<list name="TAGFILES" append="false">
|
||||
<item>./tags/Manual.tag=../../CGAL.CGAL/html</item>
|
||||
<item>./tags/Circulator.tag=../../CGAL.CGAL.Handles-and-Circulators/html</item>
|
||||
</list>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
|
@ -106,6 +108,8 @@ namespace for the XML file to be processed properly. -->
|
|||
<bool name="EXTRACT_ALL">false</bool>
|
||||
<!-- <bool name="HIDE_UNDOC_MEMBERS">true</bool> -->
|
||||
<bool name="HIDE_UNDOC_CLASSES">true</bool>
|
||||
<!-- too many warnings -->
|
||||
<bool name="WARN_IF_UNDOCUMENTED">false</bool>
|
||||
<bool name="SHOW_INCLUDE_FILES">false</bool>
|
||||
<list name="TAGFILES" append="true">
|
||||
<item>./tags/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface/html</item>
|
||||
|
|
@ -125,6 +129,7 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="EXAMPLE_PATH">../Surface_reconstruction_points_3/examples</string>
|
||||
<bool name="EXTRACT_ALL">false</bool>
|
||||
<bool name="HIDE_UNDOC_CLASSES">true</bool>
|
||||
<bool name="WARN_IF_UNDOCUMENTED">false</bool>
|
||||
<bool name="SHOW_INCLUDE_FILES">true</bool>
|
||||
<list name="TAGFILES" append="true">
|
||||
<item>./tags/Surface_mesher.tag=../../CGAL.CGAL.3D-Surface-Mesh-Generation/html</item>
|
||||
|
|
@ -282,6 +287,7 @@ namespace for the XML file to be processed properly. -->
|
|||
<item>./tags/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface/html</item>
|
||||
<item>./tags/Arrangement_on_surface_2.tag=../../CGAL.CGAL.2D-Arrangements/html</item>
|
||||
<item>./tags/Triangulation_2.tag=../../CGAL.CGAL.2D-Triangulations/html</item>
|
||||
<item>./tags/Surface_mesh_simplification.tag=../../CGAL.CGAL.Triangulated-Surface-Mesh-Simplification/html</item>
|
||||
</list>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
|
@ -300,7 +306,6 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="IMAGE_PATH">../Polyhedron/doc/Polyhedron/fig</string>
|
||||
<list name="TAGFILES" append="true">
|
||||
<item>./tags/HalfedgeDS.tag=../../CGAL.CGAL.Halfedge-Data-Structures/html</item>
|
||||
<item>./tags/Stream_support.tag=../../CGAL.CGAL.IO-Streams/html</item>
|
||||
</list>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
|
@ -420,6 +425,8 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="GENERATE_TAGFILE">./tags/Stream_support.tag</string>
|
||||
<string name="EXAMPLE_PATH">../Stream_support/examples</string>
|
||||
<string name="IMAGE_PATH">../Stream_support/doc/IOstream/fig</string>
|
||||
<list name="TAGFILES" append="false">
|
||||
</list>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
||||
|
|
@ -435,8 +442,8 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="IMAGE_PATH">../Convex_hull_3/doc/Convex_hull_3/fig</string>
|
||||
<list name="TAGFILES" append="true">
|
||||
<item>./tags/Convex_hull_2.tag=../../CGAL.CGAL.2D-Convex-Hulls-and-Extreme-Points/html</item>
|
||||
<item>./tags/Triangulation_3.tag=../../CGAL.CGAL.3D-Triangulation/html</item>
|
||||
<item>./tags/Convex_hull_d.tag=../../CGAL.CGAL.dD-Convex-Hulls-and-Delaunay-Triangulations/html</item>
|
||||
<item>./tags/Triangulation_3.tag=../../CGAL.CGAL.3D-Triangulation/html</item>
|
||||
<item>./tags/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface</item>
|
||||
</list>
|
||||
</doxygen>
|
||||
|
|
@ -449,6 +456,7 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="STRIP_FROM_PATH">../Convex_hull_d/doc/Convex_hull_d/</string>
|
||||
<string name="STRIP_FROM_INC_PATH">../Convex_hull_d/doc/Convex_hull_d/</string>
|
||||
<string name="GENERATE_TAGFILE">./tags/Convex_hull_d.tag</string>
|
||||
<string name="IMAGE_PATH">../Convex_hull_d/doc/Convex_hull_d/fig</string>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
||||
|
|
@ -518,6 +526,8 @@ namespace for the XML file to be processed properly. -->
|
|||
<item>./tags/Triangulation_2.tag=../../CGAL.CGAL.2D-Triangulation/html</item>
|
||||
<item>./tags/Number_types.tag=../../CGAL.CGAL.Number-Types/html</item>
|
||||
<item>./tags/Algebraic_foundations.tag=../../CGAL.CGAL.Algebraic-Foundations/html</item>
|
||||
<item>./tags/Circular_kernel_2.tag=../../CGAL.CGAL.2D-Circular-Geometry-Kernel/html</item>
|
||||
<item>./tags/Circular_kernel_3.tag=../../CGAL.CGAL.3D-Spherical-Geometry-Kernel/html</item>
|
||||
</list>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
|
@ -656,6 +666,9 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="GENERATE_TAGFILE">./tags/Envelope_2.tag</string>
|
||||
<string name="EXAMPLE_PATH">../Envelope_2/examples</string>
|
||||
<string name="IMAGE_PATH">../Envelope_2/doc/Envelope_2/fig</string>
|
||||
<list name="TAGFILES" append="true">
|
||||
<item>./tags/Arrangement_on_surface_2.tag=../../CGAL.CGAL.2D-Arrangements/html</item>
|
||||
</list>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
||||
|
|
@ -683,6 +696,7 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="EXAMPLE_PATH">../Minkowski_sum_2/examples</string>
|
||||
<string name="IMAGE_PATH">../Minkowski_sum_2/doc/Minkowski_sum_2/fig</string>
|
||||
<list name="TAGFILES" append="true">
|
||||
<item>./tags/Arrangement_on_surface_2.tag=../../CGAL.CGAL.2D-Arrangements/html</item>
|
||||
<item>./tags/Polygon.tag=../../CGAL.CGAL.Polygon/html</item>
|
||||
<item>./tags/Boolean_set_operations_2.tag=../../CGAL.CGAL.2D-Regularized-Boolean-Set-Operations/html</item>
|
||||
</list>
|
||||
|
|
@ -745,6 +759,7 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="STRIP_FROM_INC_PATH">../Spatial_searching/doc/Spatial_searching/</string>
|
||||
<string name="GENERATE_TAGFILE">./tags/Spatial_searching.tag</string>
|
||||
<string name="EXAMPLE_PATH">../Spatial_searching/examples</string>
|
||||
<string name="IMAGE_PATH">../Spatial_searching/doc/Spatial_searching/fig</string>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
||||
|
|
@ -869,6 +884,10 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="GENERATE_TAGFILE">./tags/Snap_rounding_2.tag</string>
|
||||
<string name="IMAGE_PATH">../Snap_rounding_2/doc/Snap_rounding_2/fig</string>
|
||||
<string name="EXAMPLE_PATH">../Snap_rounding_2/examples</string>
|
||||
<list name="TAGFILES" append="true">
|
||||
<item>./tags/Arrangement_on_surface_2.tag=../../CGAL.CGAL.2D-Arrangements/html</item>
|
||||
<item>./tags/Sweep_line_2.tag=../../CGAL.CGAL.2D-Intersection-of-Curves/html</item>
|
||||
</list>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
||||
|
|
@ -950,7 +969,10 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="STRIP_FROM_INC_PATH">../CGAL_ipelets/doc/CGAL_ipelets/</string>
|
||||
<string name="GENERATE_TAGFILE">./tags/CGAL_ipelets.tag</string>
|
||||
<string name="IMAGE_PATH">../CGAL_ipelets/doc/CGAL_ipelets/fig</string>
|
||||
<string name="EXAMPLE_PATH">../CGAL_ipelets/examples</string>
|
||||
<list name="EXAMPLE_PATH">
|
||||
<item>../CGAL_ipelets/examples</item>
|
||||
<item>../CGAL_ipelets/demo</item>
|
||||
</list>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
||||
|
|
@ -1140,6 +1162,7 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="EXAMPLE_PATH">../Triangulation_3/examples</string>
|
||||
<list name="TAGFILES" append="true">
|
||||
<item>./tags/TDS_3.tag=../../CGAL.CGAL.3D-Triangulation-Data-Structure/html</item>
|
||||
<item>./tags/Geomview.tag=../../CGAL.CGAL.Geomview/html</item>
|
||||
</list>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
|
@ -1156,6 +1179,8 @@ namespace for the XML file to be processed properly. -->
|
|||
<list name="TAGFILES" append="true">
|
||||
<item>./tags/TDS_3.tag=../../CGAL.CGAL.3D-Triangulation-Data-Structure/html</item>
|
||||
<item>./tags/Triangulation_3.tag=../../CGAL.CGAL.3D-Triangulation/html</item>
|
||||
<item>./tags/Spatial_sorting.tag=../../CGAL.CGAL.Spatial-Sorting/html</item>
|
||||
<item>./tags/Alpha_shapes_3.tag=../../CGAL.CGAL.3D-Alpha-Shapes/html</item>
|
||||
</list>
|
||||
</doxygen>
|
||||
</project>
|
||||
|
|
@ -1201,6 +1226,7 @@ namespace for the XML file to be processed properly. -->
|
|||
<string name="IMAGE_PATH">../Point_set_processing_3/doc/Point_set_processing_3/fig</string>
|
||||
<string name="EXAMPLE_PATH">../Point_set_processing_3/examples</string>
|
||||
<list name="TAGFILES" append="true">
|
||||
<item>./tags/Surface_reconstruction_points_3.tag=../../CGAL.CGAL.Surface-Reconstruction-from-Point-Sets/html</item>
|
||||
<item>./tags/Property_map.tag=../../CGAL.CGAL.CGAL-and-Boost-Property-Maps/html</item>
|
||||
<item>./tags/Bounding_volumes.tag=../../CGAL.CGAL.Bounding-Volumes/html</item>
|
||||
<item>./tags/Principal_component_analysis.tag=../../CGAL.CGAL.Principal-Component-Analysis/html</item>
|
||||
|
|
@ -1251,6 +1277,7 @@ namespace for the XML file to be processed properly. -->
|
|||
<item>../Nef_3/demo</item>
|
||||
</list>
|
||||
<list name="TAGFILES" append="true">
|
||||
<item>./tags/Nef_2.tag=../../CGAL.CGAL.2D-Boolean-Operations-on-Nef-Polygons/html</item>
|
||||
<item>./tags/Nef_S2.tag=../../CGAL.CGAL.2D-Boolean-Operations-on-Nef-Polygons-Embedded-on-the-Sphere/html</item>
|
||||
<item>./tags/Polyhedron.tag=../../CGAL.CGAL.3D-Polyhedral-Surface/html</item>
|
||||
</list>
|
||||
|
|
@ -1459,7 +1486,7 @@ namespace for the XML file to be processed properly. -->
|
|||
<item>./tags/Straight_skeleton_2.tag=../../CGAL.CGAL.2D-Straight-Skeleton-and-Polygon-Offsetting/html</item>
|
||||
<item>./tags/Voronoi_diagram_2.tag=../../CGAL.CGAL.2D-Voronoi-Diagram-Adaptor/html</item>
|
||||
<item>./tags/Surface_mesh_simplification.tag=../../CGAL.CGAL.Triangulated-Surface-Mesh-Simplification/html</item>
|
||||
<item>./tags/Subdivision_method_3.tag=../../CGAL.CGAL.3D-Surface-Subdivion-Methods/html</item>
|
||||
<item>./tags/Subdivision_method_3.tag=../../CGAL.CGAL.3D-Surface-Subdivision-Methods/html</item>
|
||||
<item>./tags/Stream_lines_2.tag=../../CGAL.CGAL.2D-Placement-of-Streamlines/html</item>
|
||||
<item>./tags/Stream_support.tag=../../CGAL.CGAL.IO-Streams/html</item>
|
||||
<item>./tags/Surface_mesh_parameterization.tag=../../CGAL.CGAL.Planar-Parameterization-of-Triangulated-Surface-Meshes</item>
|
||||
|
|
|
|||
|
|
@ -182,7 +182,10 @@ diagrams.
|
|||
\cgalexample{Envelope_2/convex_hull.cpp}
|
||||
|
||||
\anchor env2_figex_circ
|
||||
\image html ex_circle.gif "A set of four circles, as constructed in \ref ex_envelope_circles.cpp. The lower envelope and the upper envelope are shown using thick dashed lines of different colors respectively."
|
||||
\image html ex_circle.gif
|
||||
<center><b>
|
||||
A set of four circles, as constructed in \ref Envelope_2/ex_envelope_circles.cpp. The lower envelope and the upper envelope are shown using thick dashed lines of different colors respectively.
|
||||
</b></center>
|
||||
|
||||
## Example for Envelope of Non-Linear Curves ##
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ a random amount.
|
|||
`double` values \f$ x\f$ and \f$ y\f$ and returning an initialized point
|
||||
`(x,y)` of type `P`.
|
||||
Predefined implementations for these creators like the default are
|
||||
described in Section \ref sectionCreatorFunctionObjects.
|
||||
described in Section \ref STLCreators.
|
||||
|
||||
- The `value_type` of the `ForwardIterator` must be assignable
|
||||
to `P`.
|
||||
|
|
@ -85,7 +85,7 @@ grid whose size is determined by the number of points to be generated.
|
|||
`double` values \f$ x\f$ and \f$ y\f$ and returning an initialized point
|
||||
`(x,y)` of type `P`. Predefined implementations for these
|
||||
creators like the default can be found in
|
||||
Section \ref sectionCreatorFunctionObjects.
|
||||
Section \ref STLCreators.
|
||||
- The `OutputIterator` must accept values of type `P`. If the
|
||||
`OutputIterator` has a `value_type` the default
|
||||
initializer of the `creator` can be used. `P` is set to
|
||||
|
|
@ -125,7 +125,7 @@ Returns the value of `first2` after inserting the \f$ n\f$ points.
|
|||
`double` values \f$ x\f$ and \f$ y\f$ and returning an initialized point
|
||||
`(x,y)` of type `P`. Predefined implementations for these
|
||||
creators like the default can be found in
|
||||
Section \ref sectionCreatorFunctionObjects.
|
||||
Section \ref STLCreators.
|
||||
- The `value_type` of the `RandomAccessIterator` must be
|
||||
assignable to `P`. `P` is equal to the `value_type` of the
|
||||
`RandomAccessIterator` when using the default initializer.
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ grid whose size is determined by the number of points to be generated.
|
|||
`double` values \f$ x\f$, \f$ y\f$, and \f$ z\f$ and returning an initialized
|
||||
point `(x,y,z)` of type `P`. Predefined implementations for
|
||||
these creators like the default can be found in
|
||||
Section \ref sectionCreatorFunctionObjects .
|
||||
Section \ref STLCreators.
|
||||
- The `OutputIterator` must accept values of type `P`. If the
|
||||
`OutputIterator` has a `value_type` the default
|
||||
initializer of the `creator` can be used. `P` is set to
|
||||
|
|
|
|||
|
|
@ -25,10 +25,6 @@ domain.
|
|||
R >` for some representation class `R`,
|
||||
</OL>
|
||||
|
||||
The default traits class `Default_traits` is
|
||||
`Random_convex_set_traits_2`.
|
||||
.
|
||||
|
||||
\sa `CGAL::Random_points_in_square_2<Point_2, Creator>`
|
||||
\sa `CGAL::Random_points_in_disc_2<Point_2, Creator>`
|
||||
|
||||
|
|
@ -48,9 +44,8 @@ origin.
|
|||
\cgalexample{Generator/random_convex_set.cpp}
|
||||
|
||||
*/
|
||||
template < class OutputIterator, class PointGenerator,
|
||||
class Traits > OutputIterator random_convex_set_2( std::size_t n,
|
||||
OutputIterator o, const PointGenerator& pg, Traits t =
|
||||
Default_traits);
|
||||
template < class OutputIterator, class PointGenerator, class Traits >
|
||||
OutputIterator random_convex_set_2( std::size_t n,
|
||||
OutputIterator o, const PointGenerator& pg, Traits t = Random_convex_set_traits_2);
|
||||
|
||||
} /* namespace CGAL */
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@ Two kinds of point generators are provided: first, random point
|
|||
generators and second deterministic point generators. Most random
|
||||
point generators and a few deterministic point generators are provided
|
||||
as input iterators. The input iterators model an infinite sequence of
|
||||
points. The function `CGAL::cpp0x::copy_n()` can be used to copy a
|
||||
finite sequence; see Section \ref sectionCopyN. The iterator adaptor
|
||||
points. The function \ref CGAL::copy_n can be used to copy a
|
||||
finite sequence. The iterator adaptor
|
||||
`Counting_iterator` can be used to create finite iterator
|
||||
ranges; see Section \ref sectionCountingIterator.
|
||||
ranges.
|
||||
Other generators are provided as functions that write to output
|
||||
iterators. Further functions add degeneracies or random perturbations.
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ distributed in a \f$ d\f$-dimensional cube (`Random_points_in_cube_d`)
|
|||
or \f$ d\f$-dimensional ball (`Random_points_in_ball_d`) or on the boundary of a
|
||||
sphere (`Random_points_on_sphere_d`).
|
||||
For generating grid points, we provide the function
|
||||
`::points_on_grid_d()` that writes to
|
||||
`Random_points_on_sphere_d::points_on_grid_d()` that writes to
|
||||
an output iterator.
|
||||
|
||||
We also provide two functions for generating more complex geometric objects.
|
||||
|
|
@ -106,10 +106,10 @@ for the example output.
|
|||
\anchor figureIntegerPointGenerator
|
||||
\image html generators_prog2.png "Output of example program for point generators working"
|
||||
|
||||
\section secsegment_example Examples Generating Segments
|
||||
# Examples Generating Segments # {#secsegment_example}
|
||||
|
||||
The following two examples illustrate the use of the generic functions
|
||||
from Section \ref sectionGenericFunctions like
|
||||
from Section \ref STLAlgos like
|
||||
`Join_input_iterator_2` to generate
|
||||
composed objects from other
|
||||
generators - here two-dimensional segments from two point generators.
|
||||
|
|
|
|||
|
|
@ -280,7 +280,6 @@ operation, i.e., the new diagonal. The new face is to the right of the
|
|||
new diagonal, the old face is to the left. The time is proportional
|
||||
to the distance from `h` to `g` around the face.
|
||||
|
||||
\image latex euler_hds
|
||||
\image html euler_face.gif
|
||||
|
||||
*/
|
||||
|
|
@ -296,7 +295,6 @@ of the face removed and the time to compute `h->prev()`.
|
|||
|
||||
\requires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`.
|
||||
|
||||
\image latex euler_hds
|
||||
\image html euler_face.gif
|
||||
|
||||
*/
|
||||
|
|
@ -341,7 +339,6 @@ after the operation, i.e., a halfedge pointing to the new vertex.
|
|||
The time is proportional to the size of the face.
|
||||
\pre `h` is not a border halfedge.
|
||||
|
||||
\image latex euler_center
|
||||
\image html euler_center.gif
|
||||
|
||||
*/
|
||||
|
|
@ -360,7 +357,6 @@ The time is proportional to the sum of the size of all incident faces.
|
|||
|
||||
\requires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`.
|
||||
|
||||
\image latex euler_center
|
||||
\image html euler_center.gif
|
||||
*/
|
||||
Halfedge_handle erase_center_vertex( Halfedge_handle g);
|
||||
|
|
@ -377,7 +373,6 @@ which is the copy of `h-opposite()`.
|
|||
data structure and form a cycle: i.e., `h->vertex() == i->opposite()->vertex()`,
|
||||
\f$\ldots\f$ , `j->vertex() == h->opposite()->vertex()`.
|
||||
|
||||
\image latex euler_loop
|
||||
\image html euler_loop.gif
|
||||
|
||||
*/
|
||||
|
|
@ -395,7 +390,6 @@ data structure unchanged.
|
|||
|
||||
\requires `Supports_removal` \f$ \equiv\f$ `CGAL::Tag_true`.
|
||||
|
||||
\image latex euler_loop
|
||||
\image html euler_loop.gif
|
||||
*/
|
||||
Halfedge_handle join_loop( Halfedge_handle h, Halfedge_handle g);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ for the incidences, the mandatory and optional member functions
|
|||
possible for vertices, halfedges, and faces.
|
||||
|
||||
\anchor figureOptionalMethods
|
||||
\image latex hds_optional "The three classes `Vertex`, `Halfedge`, and `Face` of the halfedge data structure. Member functions with shaded background are mandatory. The others are optionally supported."
|
||||
\image html hds_optional_small.gif "The three classes `Vertex`, `Halfedge`, and `Face` of the halfedge data structure. Member functions with shaded background are mandatory. The others are optionally supported."
|
||||
|
||||
A `HalfedgeDS` organizes the internal storage of its items. Examples
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ depicts the relationship between a halfedge and its incident
|
|||
halfedges, vertices, and faces.
|
||||
|
||||
\anchor figureHalfedgeDSOptionalMethods
|
||||
\image latex hds_optional "The three classes `Vertex`, `Halfedge`, and `Face` of the halfedge data structure. Member functions with shaded background are mandatory. The others are optionally supported."
|
||||
\image html hds_optional.gif "The three classes `Vertex`, `Halfedge`, and `Face` of the halfedge data structure. Member functions with shaded background are mandatory. The others are optionally supported."
|
||||
|
||||
For the protection of the integrity of the data structure classes such
|
||||
|
|
|
|||
|
|
@ -68,17 +68,17 @@ public:
|
|||
/*!
|
||||
model of `HalfedgeDSVertex`.
|
||||
*/
|
||||
typedef Hidden_type Vertex_wrapper<Refs,Traits>::Vertex;
|
||||
typedef Vertex_wrapper<Refs,Traits>::Vertex Vertex;
|
||||
|
||||
/*!
|
||||
model of `HalfedgeDSHalfedge`.
|
||||
*/
|
||||
typedef Hidden_type Halfedge_wrapper<Refs,Traits>::Halfedge;
|
||||
typedef Halfedge_wrapper<Refs,Traits>::Halfedge Halfedge;
|
||||
|
||||
/*!
|
||||
model of `HalfedgeDSFace`.
|
||||
*/
|
||||
typedef Hidden_type Face_wrapper<Refs,Traits>::Face;
|
||||
typedef Face_wrapper<Refs,Traits>::Face Face;
|
||||
|
||||
/// @}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ variants of the halfedge data structure can omit some of these
|
|||
information, for example the halfedge pointers in faces or the
|
||||
storage of faces at all.
|
||||
|
||||
\image latex halfedge
|
||||
\image html halfedge_small.gif
|
||||
|
||||
The halfedge data structure is a combinatorial data structure,
|
||||
|
|
@ -57,7 +56,6 @@ the old implementation.
|
|||
# Software Design # {#HalfedgeDSSoftware}
|
||||
|
||||
\anchor figureHalfedgeDSDesign
|
||||
\image latex hds_design "Responsibilities of the different layers in the halfedge data-structure design." width=0.7
|
||||
\image html hds_design_col.gif "Responsibilities of the different layers in the halfedge data-structure design."
|
||||
|
||||
|
||||
|
|
@ -148,7 +146,6 @@ type for vertices are defined. The trivial traits class provides the
|
|||
type used for the point. The program creates a loop, consisting
|
||||
of two halfedges, one vertex and two faces, and checks its validity.
|
||||
|
||||
\image latex loop width=0.3
|
||||
\image html loop.gif
|
||||
|
||||
\cgalexample{HalfedgeDS/hds_prog_default.cpp}
|
||||
|
|
@ -186,16 +183,14 @@ member variable `color`.
|
|||
|
||||
## Example Defining a More %Compact Halfedge ##
|
||||
|
||||
\advancedbegin
|
||||
|
||||
The halfedge data structure as presented here is slightly less space
|
||||
\advanced The halfedge data structure as presented here is slightly less space
|
||||
efficient as, for example, the winged-edge data
|
||||
structure \cite b-prcv-75, the DCEL \cite mp-fitcp-78 or variants of
|
||||
the quad-edge data structure \cite gs-pmgsc-85. On the other hand,
|
||||
it does not require any search operations during traversals. A
|
||||
comparison can be found in \cite k-ugpdd-99.
|
||||
|
||||
The following example trades traversal time for a compact storage
|
||||
\advanced The following example trades traversal time for a compact storage
|
||||
representation using traditional C techniques (i.e., type casting and
|
||||
the assumption that pointers, especially those from <TT>malloc</TT> or
|
||||
<TT>new</TT>, point to even addresses). The idea goes as follows: The
|
||||
|
|
@ -208,7 +203,7 @@ store this bit as the least significant bit in the next halfedge
|
|||
handle. Furthermore, we do not implement a pointer to the previous
|
||||
halfedge. What remains are three pointers per halfedge.
|
||||
|
||||
We use the static member function `halfedge_handle()` to convert
|
||||
\advanced We use the static member function `halfedge_handle()` to convert
|
||||
from pointers to halfedge handles. The same solution can be applied to
|
||||
the list-based halfedge data structure `CGAL::HalfedgeDS_list`,
|
||||
see <TT>examples/HalfedgeDS/hds_prog_compact2.cpp</TT>. Here is the
|
||||
|
|
@ -216,8 +211,6 @@ example for the vector-based data structure.
|
|||
|
||||
\cgalexample{HalfedgeDS/hds_prog_compact.cpp}
|
||||
|
||||
\advancedend
|
||||
|
||||
## Example Using the Halfedge %Iterator ##
|
||||
|
||||
Two edges are created in the default halfedge data structure.
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ classes built on top of the halfedge data structure.These classes
|
|||
might be more convenient to use than the halfedge data structure
|
||||
directly, since the halfedge data structure is meant as an
|
||||
implementation layer.See for example the `CGAL::Polyhedron_3`
|
||||
class in the package \ref chapterPolyhedronRef Polyhedron.
|
||||
class in the package \ref Chapter_3D_Polyhedral_Surfaces "Polyhedron".
|
||||
|
||||
The data structure provided here is known as the
|
||||
FE-structure \cite w-ebdss-85, as
|
||||
|
|
|
|||
|
|
@ -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>`Point_2`
|
||||
<LI>`construct_circumcenter_2_object`
|
||||
<DT><B></B><DD> Additionally, `Traits` must meet the requirements for
|
||||
<LI>Additionally, `Traits` must meet the requirements for
|
||||
the traits class of the `polygon_area_2` function.
|
||||
</UL>
|
||||
<LI>`OutputIterator::value_type` is equivalent to
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ to the power diagram which is equivalent to the intersection of the
|
|||
Voronoi cell of the query point `p` with the tangent plane to the
|
||||
surface at `p`.
|
||||
|
||||
The functions \t surface_neighbors_certified_3 also return, in
|
||||
The functions \c surface_neighbors_certified_3 also return, in
|
||||
addition, a Boolean value that certifies whether or not, the Voronoi
|
||||
cell of `p` can be affected by points that lie outside the input
|
||||
range, i.e. outside the ball centered on `p` passing through the
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ we use the function objects `C2E` and `C2F`, which must be of the form
|
|||
The following example defines an efficient and exact version of the
|
||||
orientation predicate over three points using the Cartesian representation
|
||||
with double coordinates and without reference counting
|
||||
(`Simple_cartesian<double>::Point_2`).
|
||||
(`Simple_cartesian::Point_2`).
|
||||
Of course, the orientation predicate can already be found in the kernel, but
|
||||
you can follow this example to filter your own predicates.
|
||||
It uses the fast but inexact predicate based on interval arithmetic for
|
||||
|
|
|
|||
|
|
@ -948,7 +948,7 @@ Comparison_result compare_x(const Line_2<Kernel> &l1,
|
|||
/*!
|
||||
\addtogroup compare_x_circular compare_x (Circular Kernel)
|
||||
\ingroup compare_x
|
||||
\details See Chapter \ref chaptercircularkernel.
|
||||
\details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
|
||||
|
||||
\code
|
||||
#include <CGALCGAL/global_functions_circular_kernel_2.h>
|
||||
|
|
@ -980,7 +980,7 @@ Comparison_result
|
|||
/*!
|
||||
\addtogroup compare_x_spherical compare_x (Spherical Kernel)
|
||||
\ingroup compare_x
|
||||
\details See Chapter \ref chaptersphericalkernel.
|
||||
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
|
||||
|
||||
\code
|
||||
#include <CGAL/global_functions_spherical_kernel_3.h>
|
||||
|
|
@ -1059,7 +1059,7 @@ compare_xy(const Point_3<Kernel>& p, const Point_3<Kernel>& q);
|
|||
/*!
|
||||
\addtogroup compare_xy_circular compare_xy (Circular Kernel)
|
||||
\ingroup compare_xy
|
||||
\details See Chapter \ref chaptercircularkernel.
|
||||
\details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
|
||||
|
||||
\code
|
||||
#include <CGAL/global_functions_circular_kernel_2.h>
|
||||
|
|
@ -1094,7 +1094,7 @@ compare_xy(const Circular_arc_point_2<CircularKernel> &p,
|
|||
/*!
|
||||
\addtogroup compare_xy_spherical compare_xy (Spherical Kernel)
|
||||
\ingroup compare_xy
|
||||
\details See Chapter \ref chaptersphericalkernel.
|
||||
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
|
||||
|
||||
\code
|
||||
#include <CGAL/global_functions_spherical_kernel_3.h>
|
||||
|
|
@ -1285,7 +1285,7 @@ Comparison_result compare_y_at_x(const Point_2<Kernel> &p,
|
|||
|
||||
/*!
|
||||
\name With the 2D Circular Kernel
|
||||
See \ref chaptercircularkernel.
|
||||
See \ref Chapter_2D_Circular_Geometry_Kernel.
|
||||
|
||||
\code
|
||||
#include <CGAL/global_functions_circular_kernel_2.h>
|
||||
|
|
@ -1389,7 +1389,7 @@ Comparison_result compare_y(const Line_2<Kernel> &l1,
|
|||
/*!
|
||||
\addtogroup compare_y_circular compare_y (Circular Kernel)
|
||||
\ingroup compare_y
|
||||
\details See Chapter \ref chaptercircularkernel.
|
||||
\details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
|
||||
|
||||
\code
|
||||
#include <CGAL/global_functions_circular_kernel_2.h>
|
||||
|
|
@ -1420,7 +1420,7 @@ compare_y(const Circular_arc_point_2<CircularKernel> &p,
|
|||
/*!
|
||||
\addtogroup compare_y_spherical compare_y (Spherical Kernel)
|
||||
\ingroup compare_y
|
||||
\details See Chapter \ref chaptersphericalkernel.
|
||||
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
|
||||
|
||||
\code
|
||||
#include <CGAL/global_functions_circular_kernel_3.h>
|
||||
|
|
@ -1487,7 +1487,7 @@ compare_xyz(const Point_3<Kernel>& p, const Point_3<Kernel>& q);
|
|||
/*!
|
||||
\addtogroup compare_xyz_spherical compare_xyz (Spherical Kernel)
|
||||
\ingroup compare_xyz
|
||||
\details See Chapter \ref chaptersphericalkernel
|
||||
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
|
||||
|
||||
\code
|
||||
#include <CGAL/global_functions_circular_kernel_3.h>
|
||||
|
|
@ -1545,7 +1545,7 @@ Comparison_result compare_z(const Point_3<Kernel> &p, const Point_3<Kernel> &q);
|
|||
/*!
|
||||
\name With the 3D Spherical Kernel
|
||||
|
||||
\details See Chapter \ref chaptersphericalkernel
|
||||
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
|
||||
|
||||
\code
|
||||
#include <CGAL/global_functions_circular_kernel_3.h>
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ Also, `Type1` and `Type2` can be respectively of types
|
|||
|
||||
## With the 2D Circular %Kernel ##
|
||||
|
||||
\details See Chapter \ref chaptercircularkernel
|
||||
\details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel
|
||||
|
||||
\code
|
||||
#include <CGAL/Circular_kernel_intersections.h>
|
||||
|
|
@ -63,12 +63,12 @@ the following:
|
|||
- `Circular_arc_2<CircularKernel>`
|
||||
|
||||
An example illustrating this is presented in
|
||||
Chapter \ref chaptercircularkernel.
|
||||
Chapter \ref Chapter_2D_Circular_Geometry_Kernel.
|
||||
|
||||
|
||||
## With the 3D Spherical Kernel ##
|
||||
|
||||
\details See Chapter \ref chaptersphericalkernel
|
||||
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
|
||||
|
||||
\code
|
||||
#include <CGAL/Spherical_kernel_intersections.h>
|
||||
|
|
@ -86,7 +86,7 @@ the following:
|
|||
- `Circular_arc_3<SphericalKernel>`
|
||||
|
||||
An example illustrating this is presented in
|
||||
Chapter \ref chaptersphericalkernel.
|
||||
Chapter \ref Chapter_3D_Spherical_Geometry_Kernel.
|
||||
|
||||
\sa `CGAL::intersection`
|
||||
*/
|
||||
|
|
@ -162,8 +162,8 @@ void foo(CGAL::Segment_2<Kernel> seg, CGAL::Line_2<Kernel> line)
|
|||
|
||||
Examples illustrating the use of this function in the case of the 2D
|
||||
Circular %Kernel and the 3D Spherical %Kernel are presented respectively
|
||||
in Chapters \ref chaptercircularkernel and \ref
|
||||
chaptersphericalkernel.
|
||||
in Chapters \ref Chapter_2D_Circular_Geometry_Kernel and \ref
|
||||
Chapter_3D_Spherical_Geometry_Kernel.
|
||||
|
||||
|
||||
\sa `CGAL::do_intersect`
|
||||
|
|
@ -379,7 +379,7 @@ Object intersection(const Plane_3<Kernel>& pl1,
|
|||
/*!
|
||||
\addtogroup intersection_circular intersection (Circular Kernel)
|
||||
\ingroup intersection
|
||||
\details See Chapter \ref chaptercircularkernel
|
||||
\details See Chapter \ref Chapter_2D_Circular_Geometry_Kernel
|
||||
|
||||
\code
|
||||
#include <CGAL/Circular_kernel_intersections.h>
|
||||
|
|
@ -433,7 +433,7 @@ intersection(const Type1 &obj1, const Type2 &obj2,
|
|||
/*!
|
||||
\addtogroup intersection_spherical intersection (Spherical Kernel)
|
||||
\ingroup intersection
|
||||
\details See Chapter \ref chaptersphericalkernel
|
||||
\details See Chapter \ref Chapter_3D_Spherical_Geometry_Kernel
|
||||
|
||||
\code
|
||||
#include <CGAL/Spherical_kernel_intersections.h>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ several disconnected components. The result is therefore represented as a
|
|||
sequence of generalized polygons, whose edges are either line segments or
|
||||
circular arcs.
|
||||
The output sequence is returned via the output iterator `oi`, whose
|
||||
value-type must be `Gps_circle_segment_traits_2<Kernel>::Polygon_2`.
|
||||
value-type must be `Gps_circle_segment_traits_2::Polygon_2`.
|
||||
\pre `P` is a simple polygon.
|
||||
*/
|
||||
template<class Kernel, class Container, class OutputIterator>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ sequence of generalized polygons, such that the edges of each polygon
|
|||
correspond to line segments and circular arcs, both are special types of
|
||||
conic arcs, as represented by the `traits` class.
|
||||
The output sequence is returned via the output iterator `oi`, whose
|
||||
value-type must be `Gps_traits_2<ConicTraits>::Polygon_2`.
|
||||
value-type must be `Gps_traits_2::Polygon_2`.
|
||||
\pre `P` is a simple polygon.
|
||||
*/
|
||||
template<class ConicTraits, class Container, class OutputIterator>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,3 @@
|
|||
/*! \example Minkowski_sum_2/sum_triangles.cpp */
|
||||
/*! \example Minkowski_sum_2/sum_by_decomposition.cpp */
|
||||
/*! \example Minkowski_sum_2/sum_with_holes.cpp */
|
||||
/*! \example Minkowski_sum_2/approx_offset.cpp */
|
||||
/*! \example Minkowski_sum_2/exact_offset.cpp */
|
||||
/*! \example Minkowski_sum_2/exact_inset.cpp */
|
||||
|
||||
namespace CGAL {
|
||||
/*!
|
||||
|
||||
|
|
@ -123,7 +116,7 @@ contains `S.number_of_holes()` holes in its interior).
|
|||
<center>
|
||||
\anchor mink_figsum_tri
|
||||
\image html sum_triangles.gif
|
||||
<b>Computing the Minkowski sum of two triangles, as done in the example program \ref sum_triangles.cpp.</b>
|
||||
<b>Computing the Minkowski sum of two triangles, as done in the example program \ref Minkowski_sum_2/sum_triangles.cpp.</b>
|
||||
</center>
|
||||
|
||||
The following example program constructs the Minkowski sum of two triangles,
|
||||
|
|
@ -141,7 +134,7 @@ The file `print_util.h` includes auxiliary functions for printing polygons.
|
|||
\image html tight.gif
|
||||
<center>
|
||||
|
||||
<B>Computing the Minkowski sum of two non-convex polygons \f$ P\f$ and \f$ Q\f$, as done in the example programs \ref sum_with_holes.cpp and \ref sum_by_decomposition.cpp.</B>
|
||||
<B>Computing the Minkowski sum of two non-convex polygons \f$ P\f$ and \f$ Q\f$, as done in the example programs \ref Minkowski_sum_2/sum_with_holes.cpp and \ref Minkowski_sum_2/sum_by_decomposition.cpp.</B>
|
||||
</center>
|
||||
|
||||
In the following program we compute the Minkowski sum of two polygons
|
||||
|
|
@ -205,7 +198,7 @@ vertex.
|
|||
</UL>
|
||||
|
||||
The following example demonstrates the computation of the Minkowski sum
|
||||
of the same input polygons as used in \ref sum_with_holes.cpp (as
|
||||
of the same input polygons as used in \ref Minkowski_sum_2/sum_with_holes.cpp (as
|
||||
depicted in Figure \ref mink_figsum_holes), using the small-side
|
||||
angle-bisector decomposition strategy:
|
||||
|
||||
|
|
@ -337,7 +330,7 @@ namely the distance of the point \f$ q'\f$ from \f$ o_1 o_2\f$ is bounded by
|
|||
speeds up the (approximate) construction of the offset polygon and the
|
||||
application of set operations on such polygons. The function returns an
|
||||
object of the nested type
|
||||
`Gps_circle_segment_traits_2<Kernel>::Polygon_with_holes_2` representing
|
||||
`Gps_circle_segment_traits_2::Polygon_with_holes_2` representing
|
||||
the approximated offset polygon (recall that if \f$ P\f$ is not convex, its
|
||||
offset may not be simple and may contain holes, whose boundary is also comprised
|
||||
of line segments and circular arcs).
|
||||
|
|
@ -347,7 +340,7 @@ of line segments and circular arcs).
|
|||
\image html ex_offset.gif
|
||||
|
||||
<b>The offset computation performed by the example programs
|
||||
\ref approx_offset.cpp and \ref exact_offset.cpp.
|
||||
\ref Minkowski_sum_2/approx_offset.cpp and \ref Minkowski_sum_2/exact_offset.cpp.
|
||||
The input polygon is shaded and the boundary of its
|
||||
offset is drawn in a thick black line.</b></center>
|
||||
|
||||
|
|
@ -370,16 +363,16 @@ arrangement-traits class that is capable of handling conic arcs in an
|
|||
exact manner; using the `Arr_conic_traits_2` class with the number
|
||||
types provided by the <span class="textsc">Core</span> library is the preferred option.
|
||||
The function returns an object of the nested type
|
||||
`Gps_traits_2<ArrConicTraits>::Polygons_with_holes_2` (see the
|
||||
`Gps_traits_2::Polygons_with_holes_2` (see the
|
||||
documentation of the Boolean Set-Operations package for more details
|
||||
on the traits-class adapter `Gps_traits_2`), which represented the
|
||||
exact offset polygon.
|
||||
|
||||
The following example demonstrates the construction of the offset of
|
||||
the same polygon that serves as an input for the example program \ref
|
||||
approx_offset.cpp, presented in the previous subsection (see also
|
||||
Figure \ref mink_figex_offset). Note that the resulting polygon is
|
||||
smaller than the one generated by the approximated-offset function
|
||||
the same polygon that serves as an input for the example program
|
||||
\ref Minkowski_sum_2/approx_offset.cpp, presented in the previous
|
||||
subsection (see also Figure \ref mink_figex_offset).
|
||||
Note that the resulting polygon is smaller than the one generated by the approximated-offset function
|
||||
(recall that each irrational line segment in this case is approximated
|
||||
by two rational line segments), but the offset computation is
|
||||
considerably slower:
|
||||
|
|
@ -416,7 +409,7 @@ The function `approximated_inset_2 (P, r, eps, oi)` accepts a polygon
|
|||
approximation for the inset of \f$ P\f$ by the radius \f$ r\f$, with the approximation
|
||||
error bounded by \f$ \varepsilon\f$. The function returns its output via the
|
||||
output iterator `oi`, whose value-type must be
|
||||
`Gps_circle_segment_traits_2<Kernel>::Polygon_2` representing
|
||||
`Gps_circle_segment_traits_2::Polygon_2` representing
|
||||
the polygons that approximates the inset polygon.
|
||||
|
||||
\cgalexample{Minkowski_sum_2/approx_inset.cpp}
|
||||
|
|
@ -426,7 +419,7 @@ the exact inset of \f$ P\f$ with radius \f$ r\f$, and returns its output via the
|
|||
output iterator `oi`. The `traits` parameter should be an instance of
|
||||
an arrangement-traits class that is capable of handling conic arcs in an
|
||||
exact manner, whereas `oi`'s value-type must be
|
||||
`Gps_traits_2<ArrConicTraits>::Polygons_2`.
|
||||
`Gps_traits_2::Polygons_2`.
|
||||
|
||||
\cgalexample{Minkowski_sum_2/exact_inset.cpp}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
\PkgSince{3.3}
|
||||
\PkgDependsOn{\ref PkgArrangement2}
|
||||
\PkgBib{cgal:w-rms2}
|
||||
\PkgLicense{\ref licensesGPL "GPL"}
|
||||
\PkgLicense{\ref licensesGPL "GPL"}
|
||||
\PkgManuals{Chapter_2D_Minkowski_Sums,PkgMinkowskiSum2}
|
||||
\PkgDescriptionEnd
|
||||
|
||||
|
|
|
|||
|
|
@ -38,13 +38,13 @@ namespace CGAL {
|
|||
specifed, yet. Do not use any other than the default types for these two
|
||||
template parameters.
|
||||
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Vertex`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Halffacet`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Volume`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfloop`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace`
|
||||
\sa `CGAL::Nef_polyhedron_3::Vertex`
|
||||
\sa `CGAL::Nef_polyhedron_3::Halfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3::Halffacet`
|
||||
\sa `CGAL::Nef_polyhedron_3::Volume`
|
||||
\sa `CGAL::Nef_polyhedron_3::SHalfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3::SHalfloop`
|
||||
\sa `CGAL::Nef_polyhedron_3::SFace`
|
||||
\sa `CGAL::Nef_polyhedron_S2<Traits>`
|
||||
\sa `CGAL::Polyhedron_3<Traits>`
|
||||
|
||||
|
|
@ -87,10 +87,10 @@ public:
|
|||
There is no need for a user to create a `Halfedge` explicitly. The
|
||||
class `Nef_polyhedron_3<Traits>` manages the needed halfedges internally.
|
||||
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Vertex`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace`
|
||||
\sa `CGAL::Nef_polyhedron_S2<Traits>::Sphere_point`
|
||||
\sa `CGAL::Nef_polyhedron_3::Vertex`
|
||||
\sa `CGAL::Nef_polyhedron_3::SHalfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3::SFace`
|
||||
\sa `CGAL::Nef_polyhedron_S2::Sphere_point`
|
||||
|
||||
*/
|
||||
class Halfedge {
|
||||
|
|
@ -193,8 +193,8 @@ public:
|
|||
of these assignment works out, the member functions `is_shalfedge()`
|
||||
and `is_shalfloop()` are provided.
|
||||
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfloop`
|
||||
\sa `CGAL::Nef_polyhedron_3::SHalfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3::SHalfloop`
|
||||
|
||||
*/
|
||||
|
||||
|
|
@ -277,9 +277,9 @@ public:
|
|||
There is no need for a user to create a `Halffacet` explicitly. The
|
||||
class `Nef_polyhedron_3<Traits>` manages the needed halffacets internally.
|
||||
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Volume`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3::Volume`
|
||||
\sa `CGAL::Nef_polyhedron_3::Halfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3::SHalfedge`
|
||||
|
||||
*/
|
||||
|
||||
|
|
@ -369,9 +369,9 @@ public:
|
|||
of these assignment works out, the member functions `is_svertex()`,
|
||||
`is_shalfedge()` and `is_shalfloop()` are provided.
|
||||
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SHalfloop`
|
||||
\sa `CGAL::Nef_polyhedron_3::Halfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3::SHalfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3::SHalfloop`
|
||||
|
||||
*/
|
||||
|
||||
|
|
@ -463,8 +463,8 @@ public:
|
|||
There is no need for a user to create a `SFace` explicitly. The
|
||||
class `Nef_polyhedron_3<Traits>` manages the needed sfaces internally.
|
||||
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Vertex`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Volume`
|
||||
\sa `CGAL::Nef_polyhedron_3::Vertex`
|
||||
\sa `CGAL::Nef_polyhedron_3::Volume`
|
||||
|
||||
*/
|
||||
|
||||
|
|
@ -581,10 +581,10 @@ public:
|
|||
There is no need for a user to create a `SHalfedge` explicitly. The
|
||||
class `Nef_polyhedron_3<Traits>` manages the needed shalfedges internally.
|
||||
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Halfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Halffacet`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace`
|
||||
\sa `CGAL::Nef_polyhedron_S2<Traits>::Sphere_circle`
|
||||
\sa `CGAL::Nef_polyhedron_3::Halfedge`
|
||||
\sa `CGAL::Nef_polyhedron_3::Halffacet`
|
||||
\sa `CGAL::Nef_polyhedron_3::SFace`
|
||||
\sa `CGAL::Nef_polyhedron_S2::Sphere_circle`
|
||||
|
||||
*/
|
||||
|
||||
|
|
@ -748,9 +748,9 @@ public:
|
|||
There is no need for a user to create a `SHalfloop` explicitly. The
|
||||
class `Nef_polyhedron_3<Traits>` manages the needed shalfloops internally.
|
||||
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::Halffacet`
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace`
|
||||
\sa `CGAL::Nef_polyhedron_S2<Traits>::Sphere_point`
|
||||
\sa `CGAL::Nef_polyhedron_3::Halffacet`
|
||||
\sa `CGAL::Nef_polyhedron_3::SFace`
|
||||
\sa `CGAL::Nef_polyhedron_S2::Sphere_point`
|
||||
|
||||
*/
|
||||
|
||||
|
|
@ -887,7 +887,7 @@ public:
|
|||
There is no need for a user to create a `Volume` explicitly. The
|
||||
class `Nef_polyhedron_3<Traits>` manages the needed volumes internally.
|
||||
|
||||
\sa `CGAL::Nef_polyhedron_3<Traits>::SFace`
|
||||
\sa `CGAL::Nef_polyhedron_3::SFace`
|
||||
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -914,7 +914,8 @@ triangulation. If the periodic triangulation is not computed in the
|
|||
the geometric primitives in the original domain. This can be
|
||||
controlled using the enum `Iterator_type`.
|
||||
|
||||
<img border=0 src="./it_STORED_small.jpg" align=middle alt="STORED">
|
||||
\anchor P3Triangulation3figgeom_iterators
|
||||
<img border=0 src="./it_STORED_small.jpg" align=middle alt="STORED">
|
||||
<img border=0 src="./it_STORED_COVER_DOMAIN_small.jpg" align=middle alt="STORED_COVER_DOMAIN">
|
||||
<img border=0 src="./it_UNIQUE_small.jpg" align=middle alt="UNIQUE">
|
||||
<img border=0 src="./it_UNIQUE_COVER_DOMAIN_small.jpg" align=middle alt="UNIQUE_COVER_DOMAIN">
|
||||
|
|
|
|||
|
|
@ -358,7 +358,7 @@ exact.
|
|||
## Periodic Alpha Shapes ##
|
||||
|
||||
It is possible to use `Periodic_3_Delaunay_triangulation_3`
|
||||
as underlying triangulation for computing alpha shapes (cf. Chapter \ref I1_ChapterAlphashapes3D). For an example see
|
||||
as underlying triangulation for computing alpha shapes (cf. Chapter \ref Chapter_3D_Alpha_Shapes). For an example see
|
||||
Section \ref l1_SectPeriodicAS3D.
|
||||
|
||||
# Design and Implementation History # {#Periodic_3_triangulation_3Design}
|
||||
|
|
@ -371,7 +371,7 @@ algorithms \cite cgal:ct-c3pt-09 and on the package with Monique
|
|||
Teillaud.
|
||||
|
||||
The package follows the design of the 3D Triangulations package
|
||||
(see Chapter \ref chapterTriangulation3).
|
||||
(see Chapter \ref Chapter_3D_Triangulations).
|
||||
|
||||
*/
|
||||
} /* namespace CGAL */
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
|
||||
*/
|
||||
template< typename Gt, typename Tds >
|
||||
class Point_set_2 {
|
||||
template< typename Gt,
|
||||
typename Tds = Triangulation_data_structure_2<
|
||||
Triangulation_vertex_base_2<Gt> >
|
||||
>
|
||||
class Point_set_2 : public Delaunay_triangulation_2<Gt,Tds> {
|
||||
public:
|
||||
|
||||
/// \name Types
|
||||
|
|
@ -47,22 +50,22 @@ typedef Hidden_type Triangulation;
|
|||
/*!
|
||||
the size type of the underlying triangulation.
|
||||
*/
|
||||
typedef Hidden_type Triangulation::size_type;
|
||||
typedef Triangulation::size_type size_type;
|
||||
|
||||
/*!
|
||||
the vertex type of the underlying triangulation.
|
||||
*/
|
||||
typedef Hidden_type Triangulation::Vertex;
|
||||
typedef Triangulation::Vertex Vertex;
|
||||
|
||||
/*!
|
||||
the edge type of the underlying triangulation.
|
||||
*/
|
||||
typedef Hidden_type Triangulation::Edge;
|
||||
typedef Triangulation::Edge Edge;
|
||||
|
||||
/*!
|
||||
handles to vertices.
|
||||
*/
|
||||
typedef Hidden_type Triangulation::Vertex_handle ;
|
||||
typedef Triangulation::Vertex_handle Vertex_handle;
|
||||
|
||||
/// @}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ write_xyz_points(std::ostream& stream, ForwardIterator first, ForwardIterator be
|
|||
|
||||
\returns `true` on success.
|
||||
|
||||
\pram stream output stream.
|
||||
\param stream output stream.
|
||||
\param first iterator range over the input points.
|
||||
\param point_pmap property map `ForwardIterator` -> `Point_3`.
|
||||
\param normal_pmap property map `ForwardIterator` -> `Vector_3`.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ namespace CGAL {
|
|||
The output of the normal estimation algorithm highly depends on the `k` parameter.
|
||||
The number of neighbors controls the size of the point subset considered for plane fitting at each input point. As this parameter is application-specific we do not provide any default value. For noise-free point sets this value can be set to a small number, e.g., 18. Larger values (e.g., 30 or more) lead to smoother normal fields and are more time consuming. We thus recommend using them only for noisy data sets.
|
||||
|
||||
|
||||
\pre k \f$ >\f$= 2.
|
||||
|
||||
\tparam InputIterator iterator over input points.
|
||||
|
|
|
|||
|
|
@ -34,9 +34,8 @@ points or points with normals (alignment is not yet covered in \cgal);
|
|||
points; 4) Smoothing to reduce noise in the input data; 5) Normal
|
||||
estimation and orientation when the normals are not already provided
|
||||
by the acquisition device; and 6) Surface reconstruction. Chapter
|
||||
`Surface_reconstruction_points_3` \ref
|
||||
chapsurface_reconstruction_points_3 deals with surface reconstruction
|
||||
from point sets with normal attributes.
|
||||
\ref Chapter_Surface_Reconstruction_from_Point_Sets "Surface Reconstruction from Point Sets"
|
||||
deals with surface reconstruction from point sets with normal attributes.
|
||||
|
||||
\anchor Point_set_processing_3figpipeline
|
||||
\image html pipeline.jpg "Point set processing pipeline for surface reconstruction. The algorithms listed in gray are available from other CGAL components (bounding volumes and principal component analysis)."
|
||||
|
|
@ -187,8 +186,8 @@ faster than `CGAL::jet_estimate_normals()`.
|
|||
|
||||
Function `CGAL::mst_orient_normals()` orients the normals of a set of
|
||||
points with unoriented normals using the method described by Hoppe et
|
||||
al. in <I>Surface reconstruction from unorganized points</I> \cite
|
||||
cgal:hddms-srup-92. More specifically, this method constructs a
|
||||
al. in <I>Surface reconstruction from unorganized points</I> \cite cgal:hddms-srup-92.
|
||||
More specifically, this method constructs a
|
||||
Riemannian graph over the input points (the graph of the `k`
|
||||
nearest neighbor points) and propagates a seed normal orientation
|
||||
within a minimum spanning tree computed over this graph. The result is
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
For example, the algorithms of chapters `Point_set_processing_3` \ref chappoint_set_processing_3 and `Surface_reconstruction_points_3` \ref chapsurface_reconstruction_points_3 take as input parameters iterator ranges and property maps to access each point's position and normal.
|
||||
Position and normal might be represented in various ways, e.g., as a class derived from the \cgal point class, or as a `std::pair<Point_3<K>, Vector_3<K> >`, or as a `boost::tuple<..,Point_3<K>, ..., Vector_3<K> >`.
|
||||
For example, the algorithms of chapters \ref
|
||||
Chapter_Point_Set_Processing "Point Set Processing" \ref
|
||||
chappoint_set_processing_3 and
|
||||
\ref Chapter_Surface_Reconstruction_from_Point_Sets "Surface Reconstruction from Point Sets"
|
||||
take as input parameters iterator ranges and property
|
||||
maps to access each point's position and normal. Position and normal
|
||||
might be represented in various ways, e.g., as a class derived from
|
||||
the \cgal point class, or as a `std::pair<Point_3<K>, Vector_3<K> >`,
|
||||
or as a `boost::tuple<..,Point_3<K>, ..., Vector_3<K> >`.
|
||||
|
||||
This component provides property maps to support these cases:
|
||||
|
||||
|
|
@ -39,17 +46,17 @@ This component provides property maps to support these cases:
|
|||
## Example with %Dereference_property_map ##
|
||||
|
||||
The following example reads a point set and removes 5% of the points. It uses `CGAL::Dereference_property_map<Point_3>` as position property map.
|
||||
\cgalexample{Property_map/remove_outliers_example.cpp}
|
||||
\cgalexample{Point_set_processing_3/remove_outliers_example.cpp}
|
||||
|
||||
## Example with Pairs ##
|
||||
|
||||
The following example reads a point set from an input file and writes it to a file, both in the xyz format. Position and normal are stored in pairs and accessed through property maps.
|
||||
\cgalexample{Property_map/read_write_xyz_point_set_example.cpp}
|
||||
\cgalexample{Point_set_processing_3/read_write_xyz_point_set_example.cpp}
|
||||
|
||||
## Example with Tuples ##
|
||||
|
||||
The following example reads a point set in the `xyz` format and computes the average spacing. Index, position and color are stored in a tuple and accessed through property maps.
|
||||
\cgalexample{Property_map/average_spacing_example.cpp}
|
||||
\cgalexample{Point_set_processing_3/average_spacing_example.cpp}
|
||||
|
||||
*/
|
||||
} /* namespace CGAL */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
\example Property_map/remove_outliers_example.cpp
|
||||
\example Property_map/read_write_xyz_point_set_example.cpp
|
||||
\example Property_map/average_spacing_example.cpp
|
||||
\example Property_map/property_map.cpp
|
||||
\example Point_set_processing_3/remove_outliers_example.cpp
|
||||
\example Point_set_processing_3/read_write_xyz_point_set_example.cpp
|
||||
\example Point_set_processing_3/average_spacing_example.cpp
|
||||
\example Point_set_processing_3/property_map.cpp
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -339,7 +339,7 @@ in the distribution under <TT>examples/Polyhedron_IO/</TT> and
|
|||
<TT>demo/Polyhedron_IO/</TT>. We show an example converting OFF input
|
||||
into VRML 1.0 output.
|
||||
|
||||
\cgalexample{Polyhedron/polyhedron2vrml.cpp}
|
||||
\cgalexample{Polyhedron_IO/polyhedron2vrml.cpp}
|
||||
|
||||
# Extending Vertices, Halfedges, and Facets # {#PolyhedronExtending}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*!
|
||||
\example Polyhedron/polyhedron2vrml.cpp
|
||||
\example Polyhedron_IO/polyhedron2vrml.cpp
|
||||
\example Polyhedron/polyhedron_prog_color.cpp
|
||||
\example Polyhedron/polyhedron_prog_cube.cpp
|
||||
\example Polyhedron/polyhedron_prog_incr_builder.cpp
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ namespace CGAL {
|
|||
For a given `Polynomial_d` the function `canonicalize` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Canonicalize`.
|
||||
Adapts `Polynomial_traits_d::Canonicalize`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Canonicalize`.
|
||||
|
||||
|
|
@ -28,7 +28,7 @@ canonicalize(const Polynomial_d& p);
|
|||
For a given `Polynomial_d` the function `compare` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Compare`.
|
||||
Adapts `Polynomial_traits_d::Compare`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Compare`.
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ compare(const Polynomial_d& p, const Polynomial_d& q);
|
|||
For a given `Polynomial_d` the function `degree` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Degree`.
|
||||
Adapts `Polynomial_traits_d::Degree`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Degree`.
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ index = Polynomial_traits_d<Polynomial_d>::d-1);
|
|||
For a given `Polynomial_d` the function `degree_vector` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::DegreeVector`.
|
||||
Adapts `Polynomial_traits_d::DegreeVector`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::DegreeVector`.
|
||||
|
||||
|
|
@ -92,7 +92,7 @@ degree_vector(const Polynomial_d& p);
|
|||
For a given `Polynomial_d` the function `differentiate` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Differentiate`.
|
||||
Adapts `Polynomial_traits_d::Differentiate`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Differentiate`.
|
||||
|
||||
|
|
@ -115,7 +115,7 @@ index = Polynomial_traits_d<Polynomial_d>::d-1 );
|
|||
For a given `Polynomial_d` the function `evaluate_homogeneous` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Evaluate_homogeneous`.
|
||||
Adapts `Polynomial_traits_d::Evaluate_homogeneous`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::EvaluateHomogeneous`.
|
||||
|
||||
|
|
@ -140,7 +140,7 @@ Polynomial_traits_d<Polynomial_d>::Coefficient_type v);
|
|||
For a given `Polynomial_d` the function `evaluate` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Evaluate`.
|
||||
Adapts `Polynomial_traits_d::Evaluate`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Evaluate`.
|
||||
|
||||
|
|
@ -163,7 +163,7 @@ Polynomial_traits_d<Polynomial_d>::Coefficient_type x);
|
|||
For a given `Polynomial_d` the function `gcd_up_to_constant_factor` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Gcd_up_to_constant_factor`.
|
||||
Adapts `Polynomial_traits_d::Gcd_up_to_constant_factor`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::GcdUpToConstantFactor`.
|
||||
|
||||
|
|
@ -185,7 +185,7 @@ gcd_up_to_constant_factor(const Polynomial_d& p, const Polynomial_d& q);
|
|||
For a given `Polynomial_d` the function `get_coefficient` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::GetCoefficient`.
|
||||
Adapts `Polynomial_traits_d::GetCoefficient`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::GetCoefficient`.
|
||||
|
||||
|
|
@ -208,7 +208,7 @@ get_coefficient(const Polynomial_d& p, int i);
|
|||
For a given `Polynomial_d` the function `get_innermost_coefficient` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::GetInnermostCoefficient`.
|
||||
Adapts `Polynomial_traits_d::GetInnermostCoefficient`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::GetInnermostCoefficient`.
|
||||
|
||||
|
|
@ -231,7 +231,7 @@ get_innermost_coefficient(const Polynomial_d& p, Exponent_vector ev);
|
|||
For a given `Polynomial_d` the function `innermost_leading_coefficient` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::InnermostLeadingCoefficient`.
|
||||
Adapts `Polynomial_traits_d::InnermostLeadingCoefficient`.
|
||||
|
||||
For more details see the concept
|
||||
`PolynomialTraits_d::InnermostLeadingCoefficient`.
|
||||
|
|
@ -254,7 +254,7 @@ innermost_leading_coefficient(const Polynomial_d& p);
|
|||
For a given `Polynomial_d` the function `integral_division_up_to_constant_factor` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Integral_division_up_to_constant_factor`.
|
||||
Adapts `Polynomial_traits_d::Integral_division_up_to_constant_factor`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::IntegralDivisionUpToConstantFactor`.
|
||||
|
||||
|
|
@ -276,7 +276,7 @@ integral_division_up_to_constant_factor(const Polynomial_d& p, const Polynomial_
|
|||
For a given `Polynomial_d` the function `invert` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Invert`.
|
||||
Adapts `Polynomial_traits_d::Invert`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Invert`.
|
||||
|
||||
|
|
@ -298,7 +298,7 @@ invert(const Polynomial_d& p, int index = Polynomial_traits_d<Polynomial_d>::d-1
|
|||
For a given `Polynomial_d` the function `is_square_free` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Is_square_free`.
|
||||
Adapts `Polynomial_traits_d::Is_square_free`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::IsSquareFree`.
|
||||
|
||||
|
|
@ -320,7 +320,7 @@ is_square_free(const Polynomial_d& p);
|
|||
For a given `Polynomial_d` the function `is_zero_at_homogeneous` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Is_zero_at_homogeneous`.
|
||||
Adapts `Polynomial_traits_d::Is_zero_at_homogeneous`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::IsZeroAtHomogeneous`.
|
||||
|
||||
|
|
@ -343,7 +343,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
|
|||
For a given `Polynomial_d` the function `is_zero_at` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Is_zero_at`.
|
||||
Adapts `Polynomial_traits_d::Is_zero_at`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::IsZeroAt`.
|
||||
|
||||
|
|
@ -366,7 +366,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
|
|||
For a given `Polynomial_d` the function `leading_coefficient` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Leading_coefficient`.
|
||||
Adapts `Polynomial_traits_d::Leading_coefficient`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::LeadingCoefficient`.
|
||||
|
||||
|
|
@ -388,7 +388,7 @@ leading_coefficient(const Polynomial_d& p);
|
|||
For a given `Polynomial_d` the function `make_square_free` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Make_square_free`.
|
||||
Adapts `Polynomial_traits_d::Make_square_free`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::MakeSquareFree`.
|
||||
|
||||
|
|
@ -410,7 +410,7 @@ make_square_free(const Polynomial_d& p);
|
|||
For a given `Polynomial_d` the function `move` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Move`.
|
||||
Adapts `Polynomial_traits_d::Move`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Move`.
|
||||
|
||||
|
|
@ -432,7 +432,7 @@ move(const Polynomial_d& p, int i, int j);
|
|||
For a given `Polynomial_d` the function `multivariate_content` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Multivariate_content`.
|
||||
Adapts `Polynomial_traits_d::Multivariate_content`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::MultivariateContent`.
|
||||
|
||||
|
|
@ -454,7 +454,7 @@ multivariate_content(const Polynomial_d& p);
|
|||
For a given `Polynomial_d` the function `negate` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Negate`.
|
||||
Adapts `Polynomial_traits_d::Negate`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Negate`.
|
||||
|
||||
|
|
@ -498,20 +498,13 @@ where \f$ s\f$ is the number of subsequences of \f$ I\f$ of the form
|
|||
\advanced with \f$ a\neq 0,b\neq 0, k\geq 0\f$.
|
||||
|
||||
\advanced For the \f$ i\f$-th subsequence of \f$ I\f$, define
|
||||
\f$ \f$\epsilon_i:=<TD class="math">
|
||||
<TABLE CELLSPACING=5 >
|
||||
<TR>
|
||||
<TD ALIGN=CENTER NOWRAP>
|
||||
0
|
||||
<TD ALIGN=CENTER NOWRAP>
|
||||
<span class="mbox">if \f$ k\f$ is odd</span>,
|
||||
<TR>
|
||||
<TD ALIGN=CENTER NOWRAP>
|
||||
(-1)^k/2 mathrm sign(ab)
|
||||
<TD ALIGN=CENTER NOWRAP>
|
||||
<span class="mbox">if \f$ k\f$ is even</span>.
|
||||
</TABLE>
|
||||
<TD nowrap="nowrap" class="math">\f$ \f$
|
||||
|
||||
\f[
|
||||
\epsilon_i:=\begin{array}{cc}
|
||||
0 & \mbox{if $k$ is odd},\\
|
||||
(-1)^{k/2}\mathrm{sign}(ab) & \mbox{if $k$ is even}.
|
||||
\end{array}
|
||||
\f]
|
||||
|
||||
\advanced For \f$ f\in\mathbb{R}[x]\f$ with \f$ \deg f=n\f$, we have:
|
||||
\f[ C(\mathrm{stha}_n(f),\ldots,\mathrm{stha}_0(f)) = \#\{\alpha\in\R\mid f(\alpha)=0\} \f]
|
||||
|
|
@ -554,20 +547,13 @@ where \f$ s\f$ is the number of subsequences of \f$ I\f$ of the form
|
|||
\advanced with \f$ a\neq 0,b\neq 0, k\geq 0\f$.
|
||||
|
||||
\advanced For the \f$ i\f$-th subsequence of \f$ I\f$, define
|
||||
\f$ \f$\epsilon_i:=<TD class="math">
|
||||
<TABLE CELLSPACING=5 >
|
||||
<TR>
|
||||
<TD ALIGN=CENTER NOWRAP>
|
||||
0
|
||||
<TD ALIGN=CENTER NOWRAP>
|
||||
<span class="mbox">if \f$ k\f$ is odd</span>,
|
||||
<TR>
|
||||
<TD ALIGN=CENTER NOWRAP>
|
||||
(-1)^k/2 mathrm sign(ab)
|
||||
<TD ALIGN=CENTER NOWRAP>
|
||||
<span class="mbox">if \f$ k\f$ is even</span>.
|
||||
</TABLE>
|
||||
<TD nowrap="nowrap" class="math">\f$ \f$
|
||||
|
||||
\f[
|
||||
\epsilon_i:=\begin{array}{cc}
|
||||
0 & \mbox{if $k$ is odd},\\
|
||||
(-1)^{k/2}\mathrm{sign}(ab) & \mbox{if $k$ is even}.
|
||||
\end{array}
|
||||
\f]
|
||||
|
||||
\advanced For \f$ f\in\mathbb{R}[x]\f$ with \f$ \deg f=n\f$, we have:
|
||||
\f[ C(\mathrm{stha}_n(f),\ldots,\mathrm{stha}_0(f)) = \#\{\alpha\in\R\mid f(\alpha)=0\} \f]
|
||||
|
|
@ -588,7 +574,7 @@ int number_of_real_roots(InputIterator start,InputIterator end);
|
|||
For a given `Polynomial_d` the function `permute` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Permute`.
|
||||
Adapts `Polynomial_traits_d::Permute`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Permute`.
|
||||
|
||||
|
|
@ -664,7 +650,7 @@ OutputIterator3 coQ_out);
|
|||
|
||||
computes the principal Sturm-Habicht coefficients of \f$ f\f$
|
||||
with respect to the outermost variable. Each element is of type
|
||||
`Polynomial_traits_d<Polynomial_d>::Coefficient_type`.
|
||||
`Polynomial_traits_d::Coefficient_type`b.
|
||||
|
||||
For a given `Polynomial_d` the function `principal_sturm_habicht_sequence` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
|
@ -689,7 +675,7 @@ OutputIterator out);
|
|||
|
||||
computes the principal subresultants of \f$ p\f$ and \f$ q\f$,
|
||||
with respect to the outermost variable. Each element is of type
|
||||
`Polynomial_traits_d<Polynomial_d>::Coefficient_type`.
|
||||
`Polynomial_traits_d::Coefficient_type`.
|
||||
|
||||
For a given `Polynomial_d` the function `principal_subresultants` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
|
@ -715,7 +701,7 @@ OutputIterator out);
|
|||
For a given `Polynomial_d` the function `pseudo_division` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Pseudo_division`.
|
||||
Adapts `Polynomial_traits_d::Pseudo_division`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::PseudoDivision`.
|
||||
|
||||
|
|
@ -737,7 +723,7 @@ Polynomial_d& q, Polynomial_d& r, Polynomial_traits_d<Polynomial_d>::Coefficient
|
|||
For a given `Polynomial_d` the function `pseudo_division_quotient` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Pseudo_division_quotient`.
|
||||
Adapts `Polynomial_traits_d::Pseudo_division_quotient`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::PseudoDivisionQuotient`.
|
||||
|
||||
|
|
@ -760,7 +746,7 @@ pseudo_division_quotient(const Polynomial_d& p, const Polynomial_d& q);
|
|||
For a given `Polynomial_d` the function `pseudo_division_remainder` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Pseudo_division_remainder`.
|
||||
Adapts `Polynomial_traits_d::Pseudo_division_remainder`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::PseudoDivisionRemainder`.
|
||||
|
||||
|
|
@ -781,7 +767,7 @@ pseudo_division_remainder(const Polynomial_d& p, const Polynomial_d& q);
|
|||
For a given `Polynomial_d` the function `resultant` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Resultant`.
|
||||
Adapts `Polynomial_traits_d::Resultant`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Resultant`.
|
||||
|
||||
|
|
@ -802,7 +788,7 @@ resultant(const Polynomial_d& p, const Polynomial_d& q);
|
|||
For a given `Polynomial_d` the function `scale_homogeneous` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Scale_homogeneous`.
|
||||
Adapts `Polynomial_traits_d::Scale_homogeneous`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::ScaleHomogeneous`.
|
||||
|
||||
|
|
@ -827,7 +813,7 @@ int index = Polynomial_traits_d<Polynomial_d>::d-1);
|
|||
For a given `Polynomial_d` the function `scale` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Scale`.
|
||||
Adapts `Polynomial_traits_d::Scale`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Scale`.
|
||||
|
||||
|
|
@ -851,7 +837,7 @@ int index = Polynomial_traits_d<Polynomial_d>::d-1);
|
|||
For a given `Polynomial_d` the function `shift` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Shift`.
|
||||
Adapts `Polynomial_traits_d::Shift`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Shift`.
|
||||
|
||||
|
|
@ -871,7 +857,7 @@ shift(const Polynomial_d& p, int i, int index = Polynomial_traits_d<Polynomial_d
|
|||
For a given `Polynomial_d` the function `sign_at_homogeneous` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Sign_at_homogeneous`.
|
||||
Adapts `Polynomial_traits_d::Sign_at_homogeneous`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::SignAtHomogeneous`.
|
||||
|
||||
|
|
@ -894,7 +880,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
|
|||
For a given `Polynomial_d` the function `sign_at` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Sign_at`.
|
||||
Adapts `Polynomial_traits_d::Sign_at`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::SignAt`.
|
||||
|
||||
|
|
@ -917,7 +903,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
|
|||
For a given `Polynomial_d` the function `square_free_factorize` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Square_free_factorize`.
|
||||
Adapts `Polynomial_traits_d::Square_free_factorize`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::SquareFreeFactorize`.
|
||||
|
||||
|
|
@ -941,7 +927,7 @@ Polynomial_traits_d<Polynomial>::Innermost_coefficient& a);
|
|||
For a given `Polynomial_d` the function `square_free_factorize` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Square_free_factorize`.
|
||||
Adapts `Polynomial_traits_d::Square_free_factorize`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::SquareFreeFactorize`.
|
||||
|
||||
|
|
@ -963,7 +949,7 @@ square_free_factorize(const Polynomial_d& p, OutputIterator it);
|
|||
For a given `Polynomial_d` the function `square_free_factorize_up_to_constant_factor` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Square_free_factorize_up_to_constant_factor`.
|
||||
Adapts `Polynomial_traits_d::Square_free_factorize_up_to_constant_factor`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::SquareFreeFactorizeUpToConstantFactor`.
|
||||
|
||||
|
|
@ -1039,7 +1025,7 @@ OutputIterator3 cofx_out);
|
|||
For a given `Polynomial_d` the function `substitute_homogeneous` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Substitute_homogeneous`.
|
||||
Adapts `Polynomial_traits_d::Substitute_homogeneous`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::SubstituteHomogeneous`.
|
||||
|
||||
|
|
@ -1064,7 +1050,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
|
|||
For a given `Polynomial_d` the function `substitute` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Substitute`.
|
||||
Adapts `Polynomial_traits_d::Substitute`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Substitute`.
|
||||
|
||||
|
|
@ -1090,7 +1076,7 @@ const Polynomial_d& p, InputIterator begin, InputIterator end);
|
|||
For a given `Polynomial_d` the function `swap` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Swap`.
|
||||
Adapts `Polynomial_traits_d::Swap`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Swap`.
|
||||
|
||||
|
|
@ -1112,7 +1098,7 @@ swap(const Polynomial_d& p, int i, int j);
|
|||
For a given `Polynomial_d` the function `total_degree` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Total_degree`.
|
||||
Adapts `Polynomial_traits_d::Total_degree`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::TotalDegree`.
|
||||
|
||||
|
|
@ -1134,7 +1120,7 @@ total_degree(const Polynomial_d& p);
|
|||
For a given `Polynomial_d` the function `translate_homogeneous` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Translate_homogeneous`.
|
||||
Adapts `Polynomial_traits_d::Translate_homogeneous`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::TranslateHomogeneous`.
|
||||
|
||||
|
|
@ -1160,7 +1146,7 @@ int index = Polynomial_traits_d<Polynomial_d>::d-1);
|
|||
For a given `Polynomial_d` the function `translate` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Translate`.
|
||||
Adapts `Polynomial_traits_d::Translate`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::Translate`.
|
||||
|
||||
|
|
@ -1185,7 +1171,7 @@ int index = Polynomial_traits_d<Polynomial_d>::d-1);
|
|||
For a given `Polynomial_d` the function `univariate_content` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::UnivariateContent`.
|
||||
Adapts `Polynomial_traits_d::UnivariateContent`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::UnivariateContent`.
|
||||
|
||||
|
|
@ -1207,7 +1193,7 @@ univariate_content(const Polynomial_d& p);
|
|||
For a given `Polynomial_d` the function `univariate_content_up_to_constant_factor` adapts the
|
||||
according functor in `Polynomial_traits_d<Polynomial_d>`.
|
||||
|
||||
Adapts `Polynomial_traits_d<Polynomial_d>::Univariate_content_up_to_constant_factor`.
|
||||
Adapts `Polynomial_traits_d::Univariate_content_up_to_constant_factor`.
|
||||
|
||||
For more details see the concept `PolynomialTraits_d::UnivariateContentUpToConstantFactor`.
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ Hence, it can not be provided as a public type in advance.
|
|||
\sa \ref ::Polynomial_d
|
||||
\sa \ref ::PolynomialTraits_d
|
||||
\sa \ref ::PolynomialTraits_d::SubstituteHomogeneous
|
||||
\sa \ref ::CoercionTraits
|
||||
\sa \ref CGAL::Coercion_traits
|
||||
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ Hence, it can not be provided as a public type in advance.
|
|||
\sa \ref ::Polynomial_d
|
||||
\sa \ref ::PolynomialTraits_d
|
||||
\sa \ref ::PolynomialTraits_d::Substitute
|
||||
\sa \ref ::CoercionTraits
|
||||
\sa \ref CGAL::Coercion_traits
|
||||
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -14,11 +14,9 @@ all functionality related to polynomials is provided by the traits.
|
|||
|
||||
\refines ::IntegralDomainWithoutDivision
|
||||
|
||||
The algebraic structure of ::Polynomial_d depends on the
|
||||
The algebraic structure of ::Polynomial_d depends on the
|
||||
algebraic structure of ::Innermost_coefficient_type:
|
||||
|
||||
|
||||
|
||||
Innermost_coefficient_type | %Polynomial_d
|
||||
---------------------------------|--------------------------------
|
||||
::IntegralDomainWithoutDivision | ::IntegralDomainWithoutDivision
|
||||
|
|
@ -39,9 +37,6 @@ coefficient is a Field the polynomial is model of EuclideanRing.
|
|||
*/
|
||||
|
||||
class Polynomial_d {
|
||||
public:
|
||||
|
||||
/// @}
|
||||
|
||||
}; /* end Polynomial_d */
|
||||
|
||||
|
|
|
|||
|
|
@ -98,10 +98,8 @@ the polynomial as an element of \f$ R [x_0,\dots,x_{d-1}]\f$.
|
|||
According to these two different views the traits class is required to provide
|
||||
two different coefficient types:
|
||||
<UL>
|
||||
<LI>`CGAL::Polynomial_traits_d<Polynomial_d>::Coefficient_type`
|
||||
representing \f$ R[x_0,\dots,x_{d-2}]\f$.
|
||||
<LI>`CGAL::Polynomial_traits_d<Polynomial_d>::Innermost_coefficient_type`
|
||||
representing the base ring \f$ R\f$.
|
||||
<LI>`CGAL::Polynomial_traits_d::Coefficient_type` representing \f$ R[x_0,\dots,x_{d-2}]\f$.
|
||||
<LI>`CGAL::Polynomial_traits_d::Innermost_coefficient_type` representing the base ring \f$ R\f$.
|
||||
</UL>
|
||||
|
||||
Another important type which is introduced by this package is
|
||||
|
|
@ -123,15 +121,15 @@ refines `IntegralDomainWithoutDivision` which in turn refines
|
|||
constant polynomials.
|
||||
|
||||
In general a polynomial is constructed using the functor
|
||||
`CGAL::Polynomial_traits_d<Polynomial_d>::Construct_polynomial` a model of
|
||||
`CGAL::Polynomial_traits_d::Construct_polynomial` a model of
|
||||
`PolynomialTraits_d::ConstructPolynomial`. Basically there are two options:
|
||||
<UL>
|
||||
<LI>The polynomial is constructed from an iterator range with value type
|
||||
`CGAL::Polynomial_traits_d<Polynomial_d>::Coefficient_type`,
|
||||
`CGAL::Polynomial_traits_d::Coefficient_type`,
|
||||
where the \f$ begin\f$ iterator refers to the constant term
|
||||
(constant with respect to the outermost variable).
|
||||
<LI>The polynomial is constructed from an iterator range with value type
|
||||
`std::pair< CGAL::Exponent_vector, CGAL::Polynomial_traits_d<Polynomial_d>::Innermost_coefficient_type>`,
|
||||
`std::pair< CGAL::Exponent_vector, CGAL::Polynomial_traits_d::Innermost_coefficient_type>`,
|
||||
where each pair defines the coefficient for the monomial defined by
|
||||
the exponent vector.
|
||||
</UL>
|
||||
|
|
@ -140,7 +138,7 @@ However, in some cases it might be more convenient to just construct
|
|||
the polynomials representing the different variables and to obtain the
|
||||
final polynomial using
|
||||
algebraic expressions. The most elegant way to construct a certain variable is
|
||||
`CGAL::Polynomial_traits_d<Polynomial_d>::Shift` being a model of
|
||||
`CGAL::Polynomial_traits_d::Shift` being a model of
|
||||
`PolynomialTraits_d::Shift`.
|
||||
|
||||
## Example ##
|
||||
|
|
|
|||
|
|
@ -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
|
||||
--------------
|
||||
|
||||
\ref print_first_lp.cpp
|
||||
\ref QP_solver/print_first_lp.cpp
|
||||
|
||||
\sa The concept `LinearProgram`
|
||||
|
||||
|
|
@ -48,7 +48,7 @@ Output operators are defined for all entry types of `lp`.
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref print_first_nonnegative_lp.cpp
|
||||
\ref QP_solver/print_first_nonnegative_lp.cpp
|
||||
|
||||
\sa The concept `NonnegativeLinearProgram`
|
||||
|
||||
|
|
@ -76,7 +76,7 @@ Output operators are defined for all entry types of `qp`.
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref print_first_nonnegative_qp.cpp
|
||||
\ref QP_solver/print_first_nonnegative_qp.cpp
|
||||
|
||||
\sa The concept `NonnegativeQuadraticProgram`
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ Output operators are defined for all entry types of `qp`.
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref print_first_qp.cpp
|
||||
\ref QP_solver/print_first_qp.cpp
|
||||
|
||||
\sa The concept `QuadraticProgram`
|
||||
*/
|
||||
|
|
@ -147,7 +147,7 @@ with exact number type `ET`.
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref first_lp.cpp
|
||||
\ref QP_solver/first_lp.cpp
|
||||
|
||||
\models `Quadratic_program<NT>`
|
||||
\models `Quadratic_program_from_mps<NT>`
|
||||
|
|
@ -194,9 +194,9 @@ with exact number type `ET`.
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref first_nonnegative_lp.cpp
|
||||
\ref QP_solver/first_nonnegative_lp.cpp
|
||||
|
||||
The models of \ref NonnegativeLinearProgram:
|
||||
The models of \ref NonnegativeLinearProgram\:
|
||||
\sa `Quadratic_program<NT>`
|
||||
\sa `Quadratic_program_from_mps<NT>`
|
||||
\sa `Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
|
||||
|
|
@ -242,9 +242,9 @@ with exact number type `ET`.
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref first_nonnegative_qp.cpp
|
||||
\ref QP_solver/first_nonnegative_qp.cpp
|
||||
|
||||
The models of \ref ::NonnegativeQuadraticProgram:
|
||||
The models of \ref ::NonnegativeQuadraticProgram\:
|
||||
\sa `Quadratic_program<NT>`
|
||||
\sa `Quadratic_program_from_mps<NT>`
|
||||
\sa `Nonnegative_quadratic_program_from_iterators<A_it, B_it, R_it, D_it, C_it>`
|
||||
|
|
@ -289,9 +289,9 @@ with exact number type `ET`.
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref first_qp.cpp
|
||||
\ref QP_solver/first_qp.cpp
|
||||
|
||||
The models of \ref ::QuadraticProgram:
|
||||
The models of \ref QuadraticProgram\:
|
||||
\sa `Quadratic_program<NT>`
|
||||
\sa `Quadratic_program_from_mps<NT>`
|
||||
\sa `Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>`
|
||||
|
|
|
|||
|
|
@ -60,16 +60,16 @@ namespace CGAL {
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref first_lp_from_iterators.cpp
|
||||
\ref QP_solver/first_lp_from_iterators.cpp
|
||||
|
||||
The following example for the simpler model
|
||||
`Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
|
||||
should give you a flavor of the use of this
|
||||
model in practice.
|
||||
|
||||
\ref solve_convex_hull_containment_lp.h
|
||||
\ref QP_solver/solve_convex_hull_containment_lp.h
|
||||
|
||||
\ref convex_hull_containment.cpp
|
||||
\ref QP_solver/convex_hull_containment.cpp
|
||||
|
||||
\sa `LinearProgram`
|
||||
\sa `Quadratic_program<NT>`
|
||||
|
|
@ -119,9 +119,9 @@ public:
|
|||
The following example demonstrates the typical usage of makers
|
||||
with the simpler function `make_nonnegative_linear_program_from_iterators`.
|
||||
|
||||
\ref solve_convex_hull_containment_lp2.h
|
||||
\ref QP_solver/solve_convex_hull_containment_lp2.h
|
||||
|
||||
\ref convex_hull_containment2.cpp
|
||||
\ref QP_solver/convex_hull_containment2.cpp
|
||||
|
||||
\sa `Linear_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, C_it>`
|
||||
*/
|
||||
|
|
@ -163,9 +163,9 @@ make_linear_program_from_iterators (
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref solve_convex_hull_containment_lp2.h
|
||||
\ref QP_solver/solve_convex_hull_containment_lp2.h
|
||||
|
||||
\ref convex_hull_containment2.cpp
|
||||
\ref QP_solver/convex_hull_containment2.cpp
|
||||
|
||||
\sa `Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
|
||||
*/
|
||||
|
|
@ -204,9 +204,9 @@ make_nonnegative_linear_program_from_iterators (
|
|||
The following example demonstrates the typical usage of makers
|
||||
with the simpler function `make_nonnegative_linear_program_from_iterators`.
|
||||
|
||||
\ref solve_convex_hull_containment_lp2.h
|
||||
\ref QP_solver/solve_convex_hull_containment_lp2.h
|
||||
|
||||
\ref convex_hull_containment2.cpp
|
||||
\ref QP_solver/convex_hull_containment2.cpp
|
||||
|
||||
\sa `Nonnegative_quadratic_program_from_iterators<A_it, B_it, R_it, D_it, C_it>`
|
||||
|
||||
|
|
@ -246,9 +246,9 @@ make_nonnegative_quadratic_program_from_iterators (
|
|||
The following example demonstrates the typical usage of makers
|
||||
with the simpler function `make_nonnegative_linear_program_from_iterators`.
|
||||
|
||||
\ref solve_convex_hull_containment_lp2.h
|
||||
\ref QP_solver/solve_convex_hull_containment_lp2.h
|
||||
|
||||
\ref convex_hull_containment2.cpp
|
||||
\ref QP_solver/convex_hull_containment2.cpp
|
||||
|
||||
\sa `Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>`
|
||||
*/
|
||||
|
|
@ -321,11 +321,11 @@ make_quadratic_program_from_iterators (
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref first_nonnegative_lp_from_iterators.cpp
|
||||
\ref QP_solver/first_nonnegative_lp_from_iterators.cpp
|
||||
|
||||
\ref solve_convex_hull_containment_lp.h
|
||||
\ref QP_solver/solve_convex_hull_containment_lp.h
|
||||
|
||||
\ref convex_hull_containment.cpp
|
||||
\ref QP_solver/convex_hull_containment.cpp
|
||||
|
||||
\sa `NonnegativeLinearProgram`
|
||||
\sa `Quadratic_program<NT>`
|
||||
|
|
@ -402,16 +402,16 @@ public:
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref first_nonnegative_qp_from_iterators.cpp
|
||||
\ref QP_solver/first_nonnegative_qp_from_iterators.cpp
|
||||
|
||||
The following example for the simpler model
|
||||
`Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
|
||||
should give you a flavor of the use of this
|
||||
model in practice.
|
||||
|
||||
\ref solve_convex_hull_containment_lp.h
|
||||
\ref QP_solver/solve_convex_hull_containment_lp.h
|
||||
|
||||
\ref convex_hull_containment.cpp
|
||||
\ref QP_solver/convex_hull_containment.cpp
|
||||
|
||||
\sa `NonnegativeQuadraticProgram`
|
||||
\sa `Quadratic_program<NT>`
|
||||
|
|
@ -491,16 +491,16 @@ public:
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref first_qp_from_iterators.cpp
|
||||
\ref QP_solver/first_qp_from_iterators.cpp
|
||||
|
||||
The following example for the simpler model
|
||||
`Nonnegative_linear_program_from_iterators<A_it, B_it, R_it, C_it>`
|
||||
should give you a flavor of the use of this
|
||||
model in practice.
|
||||
|
||||
\ref solve_convex_hull_containment_lp.h
|
||||
\ref QP_solver/solve_convex_hull_containment_lp.h
|
||||
|
||||
\ref convex_hull_containment.cpp
|
||||
\ref QP_solver/convex_hull_containment.cpp
|
||||
|
||||
\sa `QuadraticProgram`
|
||||
\sa `Quadratic_program<NT>`
|
||||
|
|
@ -588,13 +588,13 @@ public:
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref first_qp_from_mps.cpp
|
||||
\ref QP_solver/first_qp_from_mps.cpp
|
||||
|
||||
\ref first_lp_from_mps.cpp
|
||||
\ref QP_solver/first_lp_from_mps.cpp
|
||||
|
||||
\ref first_nonnegative_qp_from_mps.cpp
|
||||
\ref QP_solver/first_nonnegative_qp_from_mps.cpp
|
||||
|
||||
\ref first_nonnegative_lp_from_mps.cpp
|
||||
\ref QP_solver/first_nonnegative_lp_from_mps.cpp
|
||||
|
||||
\sa `Quadratic_program<NT>`
|
||||
\sa `Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>`
|
||||
|
|
@ -800,15 +800,15 @@ namespace CGAL {
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref first_qp.cpp
|
||||
\ref QP_solver/first_qp.cpp
|
||||
|
||||
\ref first_lp.cpp
|
||||
\ref QP_solver/first_lp.cpp
|
||||
|
||||
\ref first_nonnegative_qp.cpp
|
||||
\ref QP_solver/first_nonnegative_qp.cpp
|
||||
|
||||
\ref first_nonnegative_lp.cpp
|
||||
\ref QP_solver/first_nonnegative_lp.cpp
|
||||
|
||||
\ref invert_matrix.cpp
|
||||
\ref QP_solver/invert_matrix.cpp
|
||||
|
||||
\sa `Quadratic_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>`
|
||||
\sa `Linear_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, C_it>`
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ the four functions
|
|||
Example
|
||||
--------------
|
||||
|
||||
\ref first_qp.cpp
|
||||
\ref QP_solver/first_qp.cpp
|
||||
|
||||
Terminology
|
||||
--------------
|
||||
|
|
@ -145,7 +145,7 @@ typedef Hidden_type Unboundedness_certificate_iterator;
|
|||
/// functions `solve_quadratic_program`, `solve_linear_program`,
|
||||
/// `solve_nonnegative_quadratic_program`, and
|
||||
/// `solve_nonnegative_linear_program`.
|
||||
/// <b>Example:</b> \ref first_qp.cpp
|
||||
/// <b>Example:</b> \ref QP_solver/first_qp.cpp
|
||||
/// @{
|
||||
|
||||
/*!
|
||||
|
|
@ -267,7 +267,7 @@ const ET& variables_common_denominator() const;
|
|||
/// 'important' variables (the ones not attaining one of their
|
||||
/// bounds), and 'important' constraints (the ones being satisfied
|
||||
/// with equality). The following methods grant access to them. \ref
|
||||
/// important_variables.cpp \ref first_qp_basic_constraints.cpp
|
||||
/// QP_solver/important_variables.cpp \ref QP_solver/first_qp_basic_constraints.cpp
|
||||
/// @{
|
||||
|
||||
/*!
|
||||
|
|
@ -334,9 +334,9 @@ std::ostream& operator<<(std::ostream& out, const Quadratic_program_solution<ET>
|
|||
/// done automatically after the solution of the program, see
|
||||
/// `Quadratic_program_options`. If the check fails, a logfile is
|
||||
/// generated that contains the details, and an error message is
|
||||
/// written to `std::cerr` (see \ref cycling.cpp for an example that
|
||||
/// uses this option). \ref first_qp.cpp \ref first_lp.cpp \ref
|
||||
/// first_nonnegative_qp.cpp \ref first_nonnegative_lp.cpp
|
||||
/// written to `std::cerr` (see \ref QP_solver/cycling.cpp for an example that
|
||||
/// uses this option). \ref QP_solver/first_qp.cpp \ref QP_solver/first_lp.cpp \ref
|
||||
/// QP_solver/first_nonnegative_qp.cpp \ref QP_solver/first_nonnegative_lp.cpp
|
||||
/// @{
|
||||
|
||||
/*!
|
||||
|
|
@ -446,7 +446,7 @@ this inequality, we get
|
|||
and since \f$D\f$ is positive semidefinite, we have
|
||||
\f$(\qpx-\qpx^*)^TD(\qpx-\qpx^*)\geq 0\f$ and the lemma follows.
|
||||
|
||||
\sa \ref optimality_certificate.cpp
|
||||
\sa \ref QP_solver/optimality_certificate.cpp
|
||||
*/
|
||||
Optimality_certificate_iterator
|
||||
optimality_certifcate_begin() const;
|
||||
|
|
@ -519,7 +519,7 @@ that there is a feasible solution \f$\qpx\f$. Then we get
|
|||
\f]
|
||||
and this is the desired contradiction \f$0>0\f$.
|
||||
|
||||
\sa \ref infeasibility_certificate.cpp
|
||||
\sa \ref QP_solver/infeasibility_certificate.cpp
|
||||
*/
|
||||
Infeasibility_certificate_iterator
|
||||
infeasibility_certificate_begin() const;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
obtained by simply not inserting any \f$ D\f$-entries. Even in the
|
||||
iterator-based approach (see
|
||||
\ref first_qp_from_iterators.cpp), linear
|
||||
\ref QP_solver/first_qp_from_iterators.cpp), linear
|
||||
and nonnegative programs can easily be defined through suitable
|
||||
`Const_oneset_iterator<T>`-style iterators.
|
||||
|
||||
|
|
@ -411,11 +411,11 @@ Here is \cgal code for solving it, using the dedicated LP solver, and
|
|||
according to the three ways for constructing a program that we have
|
||||
already discussed in Section \ref secQPfirst.
|
||||
|
||||
\ref first_lp.cpp
|
||||
\ref QP_solver/first_lp.cpp
|
||||
|
||||
\ref first_lp_from_mps.cpp
|
||||
\ref QP_solver/first_lp_from_mps.cpp
|
||||
|
||||
\ref first_lp_from_iterators.cpp
|
||||
\ref QP_solver/first_lp_from_iterators.cpp
|
||||
|
||||
In all cases, the output is
|
||||
\verbatim
|
||||
|
|
@ -459,11 +459,11 @@ variable values:
|
|||
1: 3/1
|
||||
\endverbatim
|
||||
|
||||
\ref first_nonnegative_qp.cpp
|
||||
\ref QP_solver/first_nonnegative_qp.cpp
|
||||
|
||||
\ref first_nonnegative_qp_from_mps.cpp
|
||||
\ref QP_solver/first_nonnegative_qp_from_mps.cpp
|
||||
|
||||
\ref first_nonnegative_qp_from_iterators.cpp
|
||||
\ref QP_solver/first_nonnegative_qp_from_iterators.cpp
|
||||
|
||||
## The Nonnegative Linear Programming Solver ##
|
||||
|
||||
|
|
@ -485,11 +485,11 @@ a "minimal" input and a "shortest" program; the optimal value is
|
|||
|
||||
This can be solved by any of the following three programs
|
||||
|
||||
\ref first_nonnegative_lp.cpp
|
||||
\ref QP_solver/first_nonnegative_lp.cpp
|
||||
|
||||
\ref first_nonnegative_lp_from_mps.cpp
|
||||
\ref QP_solver/first_nonnegative_lp_from_mps.cpp
|
||||
|
||||
\ref first_nonnegative_lp_from_iterators.cpp
|
||||
\ref QP_solver/first_nonnegative_lp_from_iterators.cpp
|
||||
|
||||
The output will always be
|
||||
\verbatim
|
||||
|
|
@ -569,7 +569,7 @@ You can avoid the explicit construction of the type
|
|||
if you only need an expression of it, e.g. to pass it directly
|
||||
as an argument to the solving function. Here is an alternative
|
||||
version of
|
||||
\ref solve_convex_hull_containment_lp.h
|
||||
\ref QP_solver/solve_convex_hull_containment_lp.h
|
||||
that shows how this works. In effect, you get shorter and more
|
||||
readable code.
|
||||
|
||||
|
|
@ -609,7 +609,7 @@ such a situation is called a <I>degeneracy</I>.
|
|||
There is also the concept of an important constraint: this is
|
||||
typically a constraint in the system \f$ A\qpx\qprel\qpb\f$
|
||||
that is satisfied with equality at \f$ \qpx^*\f$. Program
|
||||
\ref first_qp_basic_constraints.cpp
|
||||
\ref QP_solver/first_qp_basic_constraints.cpp
|
||||
shows how these can be accessed, using the iterators
|
||||
`basic_constraint_indices_begin()` and
|
||||
`basic_constraint_indices_end()`.
|
||||
|
|
@ -666,8 +666,8 @@ Lemma.
|
|||
|
||||
There are similar certificates for optimality and unboundedness
|
||||
that you can see in action in the programs
|
||||
\ref optimality_certificate.cpp and
|
||||
\ref unboundedness_certificate.cpp.
|
||||
\ref QP_solver/optimality_certificate.cpp and
|
||||
\ref QP_solver/unboundedness_certificate.cpp.
|
||||
The underlying variants of Farkas Lemma are somewhat more
|
||||
complicated, due to the mixed relations in \f$ \qprel\f$ and the general
|
||||
bounds. The certificate section of `Quadratic_program_solution<ET>`
|
||||
|
|
@ -701,7 +701,7 @@ magnitude, the filtering will usually have
|
|||
no dramatic effect on the performance, so in that case you might as well
|
||||
switch to `CGAL::QP_PARTIAL_DANTZIG`
|
||||
to be safe from the issue described here (see
|
||||
\ref cycling.cpp
|
||||
\ref QP_solver/cycling.cpp
|
||||
for an example that shows how to change the pricing strategy).
|
||||
|
||||
\subsection secQPcustomizationcycling The Solver Internally Cycles
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ uses three-valued comparisons and offers additional functionality,
|
|||
generic algorithms, iterators, functor adaptors for binding and swapping
|
||||
arguments and for composition, functors for projection and creation and
|
||||
adaptor classes around iterators and circulators. See also circulators in
|
||||
Chapter \ref chapterCirculators. A class storing polymorphic objects
|
||||
Chapter \ref Chapter_Handles_Ranges_and_Circulators. A class storing polymorphic objects
|
||||
is also provided, as well as a class to manage the uncertainty of some values.
|
||||
Finally, tags and policy classes to specify complexity trade-offs of data-structures,
|
||||
and a class which helps specifying that the default types in template
|
||||
|
|
@ -157,7 +157,7 @@ for backward compatibility. Those are documented for completeness and
|
|||
implementers. They are not intended to be used by users of the
|
||||
library.
|
||||
|
||||
\section secchecks Checks
|
||||
# Checks # {#secchecks}
|
||||
|
||||
Much of the \cgal code contains checks.
|
||||
For example, all checks used in the kernel code are prefixed by
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ namespace CGAL {
|
|||
\autotoc
|
||||
\authors Hans Tangelder and Andreas Fabri
|
||||
|
||||
# Introduction # {#Spatial_searching}Introduction}
|
||||
# Introduction # {#Spatial_searchingIntroduction}
|
||||
|
||||
The spatial searching package implements exact and approximate
|
||||
distance browsing by providing implementations of algorithms
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
/*!
|
||||
\example Spatial_searching/Point.h
|
||||
\example Spatial_searching/Distance.h
|
||||
\example Spatial_searching/circular_query.cpp
|
||||
\example Spatial_searching/distance_browsing.cpp
|
||||
\example Spatial_searching/fuzzy_range_query.cpp
|
||||
|
|
|
|||
|
|
@ -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
|
||||
type used to represent a straight skeleton.
|
||||
|
||||
It inherits from `HalfedgeDS_vector<Traits,Items,Alloc>`
|
||||
The only purpose of this class is to protect all the modifying
|
||||
operations in a `HalfedgeDS`. Normal users should not modify a
|
||||
straight skeleton. If an advanced user needs to get access to the
|
||||
modifying operations, it must call the required methods through the
|
||||
`Base` class.
|
||||
|
||||
\models ::StraightSkeleton_2
|
||||
\models ::DefaultConstructible
|
||||
|
|
@ -17,15 +21,11 @@ It inherits from `HalfedgeDS_vector<Traits,Items,Alloc>`
|
|||
\sa `StraightSkeletonVertex_2`
|
||||
\sa `StraightSkeletonHalfedge_2`
|
||||
\sa `StraightSkeleton_2`
|
||||
\sa The only purpose of this class is to protect all the modifying
|
||||
operations in a `HalfedgeDS`. Normal users should not modify a
|
||||
straight skeleton. If an advanced user needs to get access to the
|
||||
modifying operations, it must call the required methods through the
|
||||
`::Base` class.
|
||||
|
||||
|
||||
*/
|
||||
template< typename Traits, typename Items, typename Alloc >
|
||||
class Straight_skeleton_2 {
|
||||
class Straight_skeleton_2 : public HalfedgeDS_vector<Traits,Items,Alloc> {
|
||||
public:
|
||||
|
||||
/// @}
|
||||
|
|
|
|||
|
|
@ -39,11 +39,9 @@ The orientation of a polygon with holes is the orientation of its outer contour.
|
|||
Throughout the rest of this chapter the term <I>polygon</I> will be used as a shortcut for <I>polygon with holes</I>.
|
||||
|
||||
\anchor Validpolygons
|
||||
\image latex Straight_skeleton_2/valid_polygons "Examples of strictly simple polygons: One with no holes and two edges coincident (left) and one with 2 holes (right)."
|
||||
\image html valid_polygons.png "Examples of strictly simple polygons: One with no holes and two edges coincident (left) and one with 2 holes (right)."
|
||||
|
||||
\anchor Invalidpolygons
|
||||
\image latex Straight_skeleton_2/invalid_polygons "Examples of non-simple polygons: One folding into itself, that is, non-planar (left), one with a vertex touching an edge (right), and one with a hole crossing into the outside (bottom)"
|
||||
\image html invalid_polygons.png "Examples of non-simple polygons: One folding into itself, that is, non-planar (left), one with a vertex touching an edge (middle), and one with a hole crossing into the outside (right)"
|
||||
|
||||
## Inward Offset of a Non-degenerate Strictly-Simple Polygon with Holes ##
|
||||
|
|
@ -59,8 +57,6 @@ If the source polygon has no holes, no offset polygon has holes. If the source p
|
|||
Each offset polygon has the same orientation as the source polygon.
|
||||
|
||||
\anchor Offsets
|
||||
\image latex complex_offset "Offset contours of a sample polygon"
|
||||
\image latex complex_offset.png "Offset contours of a sample polygon"
|
||||
|
||||
## Straight Skeleton of a 2D Non-degenerate Strictly-Simple Polygon with Holes ##
|
||||
|
||||
|
|
@ -69,13 +65,9 @@ The <I>2D straight skeleton</I> of a non-degenerate strictly-simple polygon with
|
|||
These regions are bounded by angular bisectors of the supporting lines of the contour edges and each such region is itself a non-convex non-degenerate strictly-simple polygon.
|
||||
|
||||
\anchor ComplexSLS
|
||||
\image latex complex_skeleton "Straight skeleton of a complex shaggy contour"
|
||||
\image html complex_skeleton.png "Straight skeleton of a complex shaggy contour"
|
||||
|
||||
\anchor MoreSLS
|
||||
\image latex simple_skeleton_0
|
||||
\image latex simple_skeleton_1
|
||||
\image latex validly_touching
|
||||
\image html simple_skeleton_0.png "Other examples: A vertex-event (left), the case of several collinear edges (middle), and the case of a validly simple polygon with tangent edges (right)."
|
||||
|
||||
## Angular Bisecting Lines and Offset Bisectors ##
|
||||
|
|
@ -246,7 +238,6 @@ Contour vertices have time zero.
|
|||
|
||||
|
||||
\anchor Simplepolyoffsets
|
||||
\image latex fig6 "Straight Skeleton Data Structure" width=12cm
|
||||
\image html fig6.png "Straight Skeleton Data Structure" width=12cm
|
||||
|
||||
# API # {#Straight_skeleton_2API}
|
||||
|
|
@ -425,8 +416,6 @@ If you use this function to place the outer frame you are guaranteed to obtain a
|
|||
|
||||
|
||||
\anchor Exterior
|
||||
\image latex exterior_skeleton
|
||||
\image latex exterior_offset
|
||||
\image html exterior_skeleton.png
|
||||
\image html exterior_offset.png
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
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);
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ instantiated with a %Cartesian kernel, which defines the `Point_3` for the vert
|
|||
|
||||
\image html CCBorderMask.png
|
||||
|
||||
\models ::PQQMask
|
||||
\models ::PQQMask_3
|
||||
|
||||
\sa `CGAL::Subdivision_method_3`
|
||||
|
||||
|
|
@ -89,7 +89,7 @@ instantiated with a %Cartesian kernel, which defines the `Point_3` for the vert
|
|||
|
||||
\image html DSCornerMask.png
|
||||
|
||||
\models ::DQQMask
|
||||
\models ::DQQMask_3
|
||||
|
||||
\sa `CGAL::Subdivision_method_3`
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ instantiated with a %Cartesian kernel, which defines the `Point_3` for the vert
|
|||
|
||||
\image html LoopBorderMask.png
|
||||
|
||||
\models ::PTQMask
|
||||
\models ::PTQMask_3
|
||||
|
||||
\sa `CGAL::Subdivision_method_3`
|
||||
|
||||
|
|
@ -206,7 +206,7 @@ the computation on the nodes of the stencil.
|
|||
\tparam Polyhedron_3 must be a `CGAL::Polyhedron_3`
|
||||
instantiated with a %Cartesian kernel, which defines the `Point_3` for the vertices.
|
||||
|
||||
\models ::Sqrt3Mask
|
||||
\models ::Sqrt3Mask_3
|
||||
|
||||
\sa `CGAL::Subdivision_method_3`
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
\anchor Chapter_Triangulated_Surface_Mesh_Simplification
|
||||
\anchor chaptermeshsimplification
|
||||
|
||||
\autotoc
|
||||
|
||||
\authors Fernando Cacciola
|
||||
|
|
@ -34,7 +34,7 @@ is a model of that concept can be simplified. The concept is defined not in term
|
|||
of functions and traits, making it easy to adapt any concrete surface type,
|
||||
even if it is not a halfedge data structure at all.
|
||||
In particular, the concept definition follows the design of the
|
||||
<A HREF="http://www.boost.org/libs/graph/doc/index.html"> Boost Graph Library (<span class="textsc">Bgl</span>)</A>
|
||||
<A HREF="http://www.boost.org/libs/graph/doc/index.html"> Boost Graph Library (Bgl)</A>
|
||||
\cite cgal:sll-bgl-02.
|
||||
|
||||
The design is <A HREF="http://en.wikipedia.org/wiki/Policy-based_design"><I>policy-based</I></A>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
\anchor Chapter_Surface_Reconstruction_from_Point_Sets
|
||||
\anchor chapsurface_reconstruction_points_3
|
||||
|
||||
\authors Pierre Alliez, Laurent Saboret, Gaël Guennebaud
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ requirements depending on the triangulation class.
|
|||
|
||||
At the base level,
|
||||
(see Sections \ref Section_2D_Triangulations_Software_Design
|
||||
and \ref 2D_TDS_default),
|
||||
and \ref 2D_TDS_default ),
|
||||
a face stores handles
|
||||
on its three vertices and on the three neighboring faces.
|
||||
The vertices and neighbors are indexed 0,1 and 2.
|
||||
|
|
@ -39,7 +39,7 @@ as parameter in the face and vertex base classes.
|
|||
This mechanism requires that the base class provides
|
||||
a templated nested class `Rebind_TDS` that
|
||||
itself provides
|
||||
the subtype `Rebind_TDS<TDS2>::Other`
|
||||
the subtype `Rebind_TDS::Other`
|
||||
which is the <I>rebound</I> version of the base class.
|
||||
This <I>rebound</I> base class is the class
|
||||
that the `CGAL::Triangulation_data_structure_2`
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ as parameter in the face and vertex base classes.
|
|||
This mechanism requires that the base class provides
|
||||
a templated nested class `Rebind_TDS` that
|
||||
itself provides
|
||||
the subtype `Rebind_TDS<TDS2>::Other`
|
||||
the subtype `Rebind_TDS::Other`
|
||||
which is the <I>rebound</I> version of the base class.
|
||||
This <I>rebound</I> base class is the class
|
||||
that the `CGAL::Triangulation_data_structure_2`
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ Chapter \ref Chapter_2D_Triangulations, the model
|
|||
`CGAL::Triangulation_data_structure_2<Vb,Fb>` has two template
|
||||
parameters. The class `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
||||
derives its `Vertex` and `Face` types from the two template parameters
|
||||
\t %Vb and \t %Fb respectively.
|
||||
\c %Vb and \c %Fb respectively.
|
||||
|
||||
If the triangulation data structure is used alone, these parameters
|
||||
have to be instantiated by models of the concepts
|
||||
|
|
@ -41,7 +41,7 @@ models `CGAL::Triangulation_ds_face_base_2<Tds>` and
|
|||
If the triangulation data structure is plugged into a triangulation
|
||||
class, the parameters have to be instantiated by models of different
|
||||
refining concepts according to the actual type of the triangulation.
|
||||
These refining concepts and their models are described in Chapter \ref
|
||||
ref_chapter_2D_Triangulations.
|
||||
These refining concepts and their models are described in Chapter
|
||||
\ref Chapter_2D_Triangulations
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -40,8 +40,8 @@ and predicates defined in `K`.
|
|||
`Triangulation_euclidean_traits_xz_3<K>` to deal with projections on
|
||||
the `xz`- or the `yz`-plane, respectively.
|
||||
|
||||
\sa \ref CGAL/Triangulation_euclidean_traits_xz_3.h
|
||||
\sa \ref CGAL/Triangulation_euclidean_traits_yz_3.h
|
||||
\sa `CGAL/Triangulation_euclidean_traits_xz_3.h`
|
||||
\sa `CGAL/Triangulation_euclidean_traits_yz_3.h`
|
||||
|
||||
*/
|
||||
template< typename K >
|
||||
|
|
|
|||
|
|
@ -18,8 +18,7 @@ additional template parameters.
|
|||
|
||||
It is parameterized by base classes for vertices and cells which have to match
|
||||
the requirements for the concepts `TriangulationDSCellBase_3` and
|
||||
`TriangulationDSVertexBase_3` respectively
|
||||
.
|
||||
`TriangulationDSVertexBase_3` respectively.
|
||||
|
||||
They have the default values `Triangulation_ds_vertex_base_3<>` and
|
||||
`Triangulation_ds_cell_base_3<>` respectively.
|
||||
|
|
|
|||
|
|
@ -115,8 +115,7 @@ public:
|
|||
/// @{
|
||||
|
||||
/*!
|
||||
<I>Optional for the triangulation data
|
||||
structure alone.</I>
|
||||
<I>Optional for the triangulation data structure alone</I>.
|
||||
*/
|
||||
typedef Hidden_type Point;
|
||||
|
||||
|
|
@ -645,7 +644,7 @@ bool are_equal(const Facet & f, Cell_handle n, int j) const;
|
|||
Two kinds of flips exist for a three-dimensional triangulation. They
|
||||
are reciprocal. To be flipped, an edge must be incident to three
|
||||
tetrahedra. During the flip, these three tetrahedra disappear and two
|
||||
tetrahedra appear. Figure \ref TDS3figflips(left) shows the edge that
|
||||
tetrahedra appear. Figure \ref TDS3figflips (left) shows the edge that
|
||||
is flipped as bold dashed, and one of its three incident facets is
|
||||
shaded. On the right, the facet shared by the two new tetrahedra is
|
||||
shaded.
|
||||
|
|
|
|||
|
|
@ -216,8 +216,7 @@ of a user provided type, and give access to it.
|
|||
the geometric versions typically used by the geometric layer,
|
||||
`Triangulation_vertex_base_3`, and `Triangulation_cell_base_3`).
|
||||
<LI> write his own base classes following the requirements given by the
|
||||
concepts `TriangulationCellBase_3` and `TriangulationVertexBase_3`
|
||||
.
|
||||
concepts `TriangulationCellBase_3` and `TriangulationVertexBase_3`.
|
||||
</UL>
|
||||
|
||||
\subsection tds3cyclic Cyclic Dependency
|
||||
|
|
@ -303,14 +302,14 @@ typedef Triangulation_vertex_base_3<GT, Vb2> Other;
|
|||
The following example shows how to construct a 3D triangulation data
|
||||
structure by inserting vertices.
|
||||
|
||||
\cgalexample{TDS_3/tds.cpp}
|
||||
\cgalexample{Triangulation_3/tds.cpp}
|
||||
|
||||
## Cross-Linking Between a 2D and a 3D Data Structures ##
|
||||
|
||||
This example program illustrates how to setup a 2D and a 3D triangulation data
|
||||
structures whose vertices respectively store vertex handles of the other one.
|
||||
|
||||
\cgalexample{TDS_3/linking_2d_and_3d.cpp}
|
||||
\cgalexample{Triangulation_3/linking_2d_and_3d.cpp}
|
||||
|
||||
# Design and Implementation History # {#TDS_3Design}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
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
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -348,6 +348,7 @@ Figure \ref T3figlayers shows in more detail the flexibility that is
|
|||
provided, and the place where the user can insert his own vertex and/or cell
|
||||
base classes.
|
||||
|
||||
\anchor T3figlayers
|
||||
\image html design.gif "Triangulation software design."
|
||||
|
||||
The design of the triangulation data structure gives the possibility to store
|
||||
|
|
@ -905,7 +906,7 @@ also be found in \cite cgal:dp-eegpd-03.
|
|||
<TD ALIGN=RIGHT NOWRAP>
|
||||
3.8
|
||||
<TD ALIGN=RIGHT NOWRAP>
|
||||
$ \infty $-loop
|
||||
\f$ \infty \f$-loop
|
||||
<TR><TD ALIGN=LEFT NOWRAP COLSPAN=6><HR>
|
||||
<TR>
|
||||
<TD ALIGN=LEFT NOWRAP>
|
||||
|
|
|
|||
|
|
@ -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