diff --git a/Classification/include/CGAL/Classification/classify.h b/Classification/include/CGAL/Classification/classify.h index 492d1855237..e4a94e15386 100644 --- a/Classification/include/CGAL/Classification/classify.h +++ b/Classification/include/CGAL/Classification/classify.h @@ -556,11 +556,11 @@ namespace internal { (boost::make_transform_iterator (input.begin(), CGAL::Property_map_to_unary_function(item_map)), boost::make_transform_iterator (input.end(), CGAL::Property_map_to_unary_function(item_map))); - float Dx = float(bbox.xmax() - bbox.xmin()); - float Dy = float(bbox.ymax() - bbox.ymin()); - float A = Dx * Dy; - float a = A / min_number_of_subdivisions; - float l = std::sqrt(a); + double Dx = double(bbox.xmax() - bbox.xmin()); + double Dy = double(bbox.ymax() - bbox.ymin()); + double A = Dx * Dy; + double a = A / min_number_of_subdivisions; + double l = std::sqrt(a); std::size_t nb_x = std::size_t(Dx / l) + 1; std::size_t nb_y = std::size_t((A / nb_x) / a) + 1; std::size_t nb = nb_x * nb_y; @@ -571,11 +571,11 @@ namespace internal { for (std::size_t y = 0; y < nb_y; ++ y) { bboxes.push_back - (CGAL::Bbox_3 (bbox.xmin() + Dx * (x / float(nb_x)), - bbox.ymin() + Dy * (y / float(nb_y)), + (CGAL::Bbox_3 (bbox.xmin() + Dx * (x / double(nb_x)), + bbox.ymin() + Dy * (y / double(nb_y)), bbox.zmin(), - bbox.xmin() + Dx * ((x+1) / float(nb_x)), - bbox.ymin() + Dy * ((y+1) / float(nb_y)), + (x == nb_x - 1 ? bbox.xmax() : bbox.xmin() + Dx * ((x+1) / double(nb_x))), + (y == nb_y - 1 ? bbox.ymax() : bbox.ymin() + Dy * ((y+1) / double(nb_y))), bbox.zmax())); } @@ -590,14 +590,16 @@ namespace internal { for (std::size_t s = 0; s < input.size(); ++ s) { CGAL::Bbox_3 b = get(item_map, *(input.begin() + s)).bbox(); - - for (std::size_t i = 0; i < bboxes.size(); ++ i) + + std::size_t i = 0; + for (; i < bboxes.size(); ++ i) if (CGAL::do_overlap (b, bboxes[i])) { input_to_indices[s] = std::make_pair (i, indices[i].size()); indices[i].push_back (s); break; } + CGAL_assertion_msg (i != bboxes.size(), "Point was not assigned to any subdivision."); } internal::Classify_functor_graphcut diff --git a/Documentation/doc/resources/1.8.13/BaseDoxyfile.in b/Documentation/doc/resources/1.8.13/BaseDoxyfile.in index 1f83c704b62..36b88e0bc40 100644 --- a/Documentation/doc/resources/1.8.13/BaseDoxyfile.in +++ b/Documentation/doc/resources/1.8.13/BaseDoxyfile.in @@ -266,6 +266,8 @@ ALIASES = "sc{1}=\1 \endhtmlonly" \ "cgalAdvancedFunction=This is an advanced function." \ "cgalAdvancedClass=This is an advanced class." \ + "cgalAdvancedType=This is an advanced type." \ + "cgalAdvancedConcept=This is an advanced concept." \ "cgalRequiresCPP11=\warning This function requires a C++11 compiler." \ "cgalPkgPicture{1}=
\n \image html \1 \n
" \ "cgalPkgSummaryBegin=
" \ diff --git a/Documentation/doc/resources/1.8.14/BaseDoxyfile.in b/Documentation/doc/resources/1.8.14/BaseDoxyfile.in index 601bb91ce64..6818d719cbc 100644 --- a/Documentation/doc/resources/1.8.14/BaseDoxyfile.in +++ b/Documentation/doc/resources/1.8.14/BaseDoxyfile.in @@ -267,6 +267,8 @@ ALIASES = "sc{1}=\1 \endhtmlonly" \ "cgalAdvancedFunction=This is an advanced function." \ "cgalAdvancedClass=This is an advanced class." \ + "cgalAdvancedType=This is an advanced type." \ + "cgalAdvancedConcept=This is an advanced concept." \ "cgalRequiresCPP11=\warning This function requires a C++11 compiler." \ "cgalPkgPicture{1}=
^^ \image html \1 ^^
" \ "cgalPkgSummaryBegin=
" \ diff --git a/Documentation/doc/resources/1.8.4/BaseDoxyfile.in b/Documentation/doc/resources/1.8.4/BaseDoxyfile.in index 374652e092c..ea829659a62 100644 --- a/Documentation/doc/resources/1.8.4/BaseDoxyfile.in +++ b/Documentation/doc/resources/1.8.4/BaseDoxyfile.in @@ -251,6 +251,8 @@ ALIASES += "cgalAdvancedBegin=\htmlonly
Advanc ALIASES += "cgalAdvancedEnd=\htmlonly
\endhtmlonly" ALIASES += "cgalAdvancedFunction=This is an advanced function." ALIASES += "cgalAdvancedClass=This is an advanced class." +ALIASES += "cgalAdvancedType=This is an advanced type." +ALIASES += "cgalAdvancedConcept=This is an advanced concept." ALIASES += "cgalRequiresCPP11=\warning This function requires a C++11 compiler." diff --git a/Inscribed_areas/doc/Inscribed_areas/Concepts/ExtremalPolygonTraits_2.h b/Inscribed_areas/doc/Inscribed_areas/Concepts/ExtremalPolygonTraits_2.h index 90f9d20b401..b1be56d11bb 100644 --- a/Inscribed_areas/doc/Inscribed_areas/Concepts/ExtremalPolygonTraits_2.h +++ b/Inscribed_areas/doc/Inscribed_areas/Concepts/ExtremalPolygonTraits_2.h @@ -3,9 +3,12 @@ \ingroup PkgInscribedAreasConcepts \cgalConcept +\cgalAdvancedConcept +\cgalAdvancedBegin The concept `ExtremalPolygonTraits_2` provides the types and operations needed to compute a maximal \f$ k\f$-gon that can be inscribed into a given convex polygon. +\cgalAdvancedEnd \note `ExtremalPolygonTraits_2::Less_xy_2` and `ExtremalPolygonTraits_2::Orientation_2` are used for (expensive) diff --git a/Mesh_3/include/CGAL/IO/File_medit.h b/Mesh_3/include/CGAL/IO/File_medit.h index 656a6b5db98..9337f8f1287 100644 --- a/Mesh_3/include/CGAL/IO/File_medit.h +++ b/Mesh_3/include/CGAL/IO/File_medit.h @@ -818,8 +818,12 @@ output_to_medit(std::ostream& os, typename C3T3::Facet f = (*fit); // Apply priority among subdomains, to get consistent facet orientation per subdomain-pair interface. - if (f.first->subdomain_index() < f.first->neighbor(f.second)->subdomain_index()) - f = tr.mirror_facet(f); + if ( print_each_facet_twice ) + { + // NOTE: We mirror a facet when needed to make it consistent with No_patch_facet_pmap_first/second. + if (f.first->subdomain_index() > f.first->neighbor(f.second)->subdomain_index()) + f = tr.mirror_facet(f); + } // Get facet vertices in CCW order. Vertex_handle vh1 = f.first->vertex((f.second + 1) % 4); @@ -833,10 +837,10 @@ output_to_medit(std::ostream& os, os << V[vh1] << ' ' << V[vh2] << ' ' << V[vh3] << ' '; os << get(facet_pmap, *fit) << '\n'; - // Print triangle again if needed + // Print triangle again if needed, with opposite orientation if ( print_each_facet_twice ) { - os << V[vh1] << ' ' << V[vh2] << ' ' << V[vh3] << ' '; + os << V[vh3] << ' ' << V[vh2] << ' ' << V[vh1] << ' '; os << get(facet_twice_pmap, *fit) << '\n'; } } diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_Delaunay_triangulation_2.h b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_Delaunay_triangulation_2.h index ec9a0f14115..07ef62e2f6f 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_Delaunay_triangulation_2.h +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_Delaunay_triangulation_2.h @@ -305,6 +305,7 @@ public: /// @{ /*! + \cgalAdvancedFunction \cgalAdvancedBegin Checks the combinatorial validity of the triangulation and the validity of its geometric embedding (see @@ -319,6 +320,7 @@ public: is_valid(bool verbose = false) const; /*! + \cgalAdvancedFunction \cgalAdvancedBegin Checks the combinatorial and geometric validity of the cell (see Section \ref P2Triangulation2secintro). Also checks that the diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_2.h b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_2.h index d56a4e6301f..7efd97aab28 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_2.h +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_2.h @@ -438,6 +438,7 @@ public: /// @{ /*! + \cgalAdvancedFunction \cgalAdvancedBegin Returns a reference to the triangulation data structure. \cgalAdvancedEnd @@ -473,6 +474,7 @@ public: /// @{ /*! + \cgalAdvancedFunction \cgalAdvancedBegin The current triangulation remains a triangulation in the 1-sheeted covering space even after adding points if this method returns @@ -486,6 +488,7 @@ public: bool is_extensible_triangulation_in_1_sheet_h1() const; /*! + \cgalAdvancedFunction \cgalAdvancedBegin The same as `is_extensible_triangulation_in_1_sheet_h1()` but with a more precise heuristic, i.e. it might answer `true` in cases in which @@ -498,6 +501,7 @@ public: bool is_extensible_triangulation_in_1_sheet_h2() const; /*! + \cgalAdvancedFunction \cgalAdvancedBegin Returns `true` if the current triangulation would still be a triangulation in the 1-sheeted covering space, returns `false` otherwise. @@ -506,6 +510,7 @@ public: bool is_triangulation_in_1_sheet() const; /*! + \cgalAdvancedFunction \cgalAdvancedBegin Converts the current triangulation into the same periodic triangulation in the 1-sheeted covering space. @@ -515,6 +520,7 @@ public: void convert_to_1_sheeted_covering(); /*! + \cgalAdvancedFunction \cgalAdvancedBegin Converts the current triangulation into the same periodic triangulation in the 9-sheeted covering space. @@ -971,6 +977,7 @@ public: /// @{ /*! + \cgalAdvancedFunction \cgalAdvancedBegin Inserts the first vertex. \cgalAdvancedEnd @@ -978,6 +985,7 @@ public: Vertex_handle insert_first(const Point& p); /*! + \cgalAdvancedFunction \cgalAdvancedBegin Inserts vertex `v` in face `f`. Face `f` is modified, @@ -988,6 +996,7 @@ public: Vertex_handle insert_in_face(const Point& p, Face_handle f); /*! + \cgalAdvancedFunction \cgalAdvancedBegin Removes a vertex of degree three. Two of the incident faces are destroyed, the third one is modified. \pre Vertex `v` is a vertex with degree three. @@ -996,6 +1005,7 @@ public: void remove_degree_3(Vertex_handle v); /*! + \cgalAdvancedFunction \cgalAdvancedBegin Removes the unique vertex in the triangulation. @@ -1006,10 +1016,11 @@ public: /*! - \cgalAdvancedBegin - creates a new vertex `v` and use it to star the hole - whose boundary is described by the sequence of edges - `[edge_begin, edge_end]`. Returns a handle to the new vertex. + \cgalAdvancedFunction + \cgalAdvancedBegin + creates a new vertex `v` and use it to star the hole + whose boundary is described by the sequence of edges + `[edge_begin, edge_end]`. Returns a handle to the new vertex. \pre The triangulation is a triangulation of 1 sheet \cgalAdvancedEnd @@ -1020,6 +1031,7 @@ public: EdgeIt edge_end); /*! + \cgalAdvancedFunction \cgalAdvancedBegin same as above, except that the algorithm first recycles faces in the sequence `[face_begin, face_end]` @@ -1036,6 +1048,7 @@ public: FaceIt face_end); /*! + \cgalAdvancedFunction \cgalAdvancedBegin Changes the domain. Note that this function calls `clear()`, i.e., it erases the existing triangulation. @@ -1084,6 +1097,7 @@ public: /// @{ /*! + \cgalAdvancedFunction \cgalAdvancedBegin Checks the combinatorial validity of the triangulation and also the validity of its geometric embedding. diff --git a/Point_set_3/include/CGAL/Point_set_3.h b/Point_set_3/include/CGAL/Point_set_3.h index 172c0a996b7..df0ea714daf 100644 --- a/Point_set_3/include/CGAL/Point_set_3.h +++ b/Point_set_3/include/CGAL/Point_set_3.h @@ -1043,6 +1043,7 @@ public: #ifdef DOXYGEN_RUNNING + /// \cgalAdvancedType /// \cgalAdvancedBegin /// Model of `OutputIterator` used to insert elements by defining /// the value of the property `Property`. @@ -1050,6 +1051,7 @@ public: template using Property_back_inserter = unspecified_type; + /// \cgalAdvancedType /// \cgalAdvancedBegin /// Model of `WritablePropertyMap` based on `Property` and that /// is allowed to push new items to the point set if needed. @@ -1129,26 +1131,30 @@ public: }; /// \endcond + /// \cgalAdvancedType /// \cgalAdvancedBegin /// Back inserter on indices /// \cgalAdvancedEnd typedef Property_back_inserter Index_back_inserter; + /// \cgalAdvancedType /// \cgalAdvancedBegin /// Back inserter on points /// \cgalAdvancedEnd typedef Property_back_inserter Point_back_inserter; + /// \cgalAdvancedType /// \cgalAdvancedBegin /// Property map for pushing new points /// \cgalAdvancedEnd typedef Push_property_map Point_push_map; + /// \cgalAdvancedType /// \cgalAdvancedBegin /// Property map for pushing new vectors /// \cgalAdvancedEnd typedef Push_property_map Vector_push_map; /*! - \cgalAdvancedBegin \cgalAdvancedFunction + \cgalAdvancedBegin \brief Returns the push property map of the given property. \tparam T type of the property. @@ -1167,8 +1173,8 @@ public: return Push_property_map > (this, &prop, size()); } /*! - \cgalAdvancedBegin \cgalAdvancedFunction + \cgalAdvancedBegin \brief Returns the push property map of the point property. \cgalAdvancedEnd */ @@ -1177,8 +1183,8 @@ public: return Point_push_map (this, &m_points, size()); } /*! - \cgalAdvancedBegin \cgalAdvancedFunction + \cgalAdvancedBegin \brief Returns the push property map of the normal property. \note The normal property must have been added to the point set @@ -1190,8 +1196,8 @@ public: return Vector_push_map (this, &m_normals, size()); } /*! - \cgalAdvancedBegin \cgalAdvancedFunction + \cgalAdvancedBegin \brief Returns the back inserter on the index property. \cgalAdvancedEnd */ @@ -1200,8 +1206,8 @@ public: return Index_back_inserter (this, &m_indices, size()); } /*! - \cgalAdvancedBegin \cgalAdvancedFunction + \cgalAdvancedBegin \brief Returns the back inserter on the point property. \cgalAdvancedEnd */ diff --git a/Spatial_searching/doc/Spatial_searching/Concepts/Splitter.h b/Spatial_searching/doc/Spatial_searching/Concepts/Splitter.h index d829df0e1c9..f992348ba99 100644 --- a/Spatial_searching/doc/Spatial_searching/Concepts/Splitter.h +++ b/Spatial_searching/doc/Spatial_searching/Concepts/Splitter.h @@ -2,7 +2,10 @@ \ingroup PkgSpatialSearchingDConcepts \cgalConcept +\cgalAdvancedConcept +\cgalAdvancedBegin The concept `Splitter` defines the requirements for a function object class implementing a splitting rule. +\cgalAdvancedEnd \cgalHasModel `CGAL::Fair` \cgalHasModel `CGAL::Median_of_rectangle` diff --git a/Surface_mesh_skeletonization/include/CGAL/Mean_curvature_flow_skeletonization.h b/Surface_mesh_skeletonization/include/CGAL/Mean_curvature_flow_skeletonization.h index ba18f094c0b..8d28897f2e3 100644 --- a/Surface_mesh_skeletonization/include/CGAL/Mean_curvature_flow_skeletonization.h +++ b/Surface_mesh_skeletonization/include/CGAL/Mean_curvature_flow_skeletonization.h @@ -463,6 +463,7 @@ public: /// \name Vertex Motion Parameters /// @{ + /// \cgalAdvancedFunction /// \cgalAdvancedBegin /// Controls the velocity of movement and approximation quality: /// decreasing this value makes the mean curvature flow based contraction converge @@ -482,7 +483,8 @@ public: { return m_is_medially_centered; } - + + /// \cgalAdvancedFunction /// \cgalAdvancedBegin /// Controls the smoothness of the medial approximation: /// increasing this value results in a (less smooth) skeleton closer diff --git a/TDS_3/doc/TDS_3/Concepts/TriangulationDataStructure_3.h b/TDS_3/doc/TDS_3/Concepts/TriangulationDataStructure_3.h index c24fa7463de..ee82122c9d9 100644 --- a/TDS_3/doc/TDS_3/Concepts/TriangulationDataStructure_3.h +++ b/TDS_3/doc/TDS_3/Concepts/TriangulationDataStructure_3.h @@ -118,6 +118,7 @@ Can be `CGAL::Sequential_tag` or `CGAL::Parallel_tag`. If it is typedef unspecified_type Concurrency_tag; /*! +\cgalAdvancedType \cgalAdvancedBegin This template class allows to get the type of a triangulation data structure that only changes the vertex type. It has to define a type @@ -130,6 +131,7 @@ template using Rebind_vertex = unspecified_type; /*! +\cgalAdvancedType \cgalAdvancedBegin This template class allows to get the type of a triangulation data structure that only changes the cell type. It has to define a type diff --git a/Triangulation/doc/Triangulation/CGAL/Triangulation.h b/Triangulation/doc/Triangulation/CGAL/Triangulation.h index 6ac5855e6d9..b9d1b2c1e87 100644 --- a/Triangulation/doc/Triangulation/CGAL/Triangulation.h +++ b/Triangulation/doc/Triangulation/CGAL/Triangulation.h @@ -253,6 +253,7 @@ Returns a const reference to the underlying triangulation data structure. const Triangulation_ds & tds() const; /*! +\cgalAdvancedFunction \cgalAdvancedBegin Returns a non-const reference to the underlying triangulation data structure. diff --git a/Triangulation/doc/Triangulation/CGAL/Triangulation_data_structure.h b/Triangulation/doc/Triangulation/CGAL/Triangulation_data_structure.h index bc2459e2dbf..0542353ebb1 100644 --- a/Triangulation/doc/Triangulation/CGAL/Triangulation_data_structure.h +++ b/Triangulation/doc/Triangulation/CGAL/Triangulation_data_structure.h @@ -74,6 +74,7 @@ bool is_valid(bool verbose = true) const; /// @{ /*! +\cgalAdvancedType \cgalAdvancedBegin This template class allows to get the type of a triangulation data structure that only changes the vertex type. It has to define a type @@ -103,6 +104,7 @@ using Rebind_full_cell = unspecified_type; /// @{ /*! +\cgalAdvancedFunction \cgalAdvancedBegin A set `C` of full cells satisfying the same condition as in method `Triangulation_data_structure::insert_in_hole()` is assumed to be marked. This diff --git a/Triangulation/doc/Triangulation/CGAL/Triangulation_ds_full_cell.h b/Triangulation/doc/Triangulation/CGAL/Triangulation_ds_full_cell.h index 1c9d5120ab1..3dd0b93741f 100644 --- a/Triangulation/doc/Triangulation/CGAL/Triangulation_ds_full_cell.h +++ b/Triangulation/doc/Triangulation/CGAL/Triangulation_ds_full_cell.h @@ -59,7 +59,8 @@ public: /// \name Validity Check /// @{ -/*! +/*! +\cgalAdvancedFunction \cgalAdvancedBegin Implements the validity checks required by the concept `TriangulationDSFullCell`. diff --git a/Triangulation/doc/Triangulation/CGAL/Triangulation_ds_vertex.h b/Triangulation/doc/Triangulation/CGAL/Triangulation_ds_vertex.h index f306645c6c4..36fad03edfc 100644 --- a/Triangulation/doc/Triangulation/CGAL/Triangulation_ds_vertex.h +++ b/Triangulation/doc/Triangulation/CGAL/Triangulation_ds_vertex.h @@ -40,6 +40,7 @@ public: /// @{ /*! +\cgalAdvancedFunction \cgalAdvancedBegin Implements the validity checks required by the concept `TriangulationDSVertex`. Does not implement additional checks. diff --git a/Triangulation/doc/Triangulation/Concepts/TriangulationDataStructure.h b/Triangulation/doc/Triangulation/Concepts/TriangulationDataStructure.h index 5f6cb260eba..28b718fe432 100644 --- a/Triangulation/doc/Triangulation/Concepts/TriangulationDataStructure.h +++ b/Triangulation/doc/Triangulation/Concepts/TriangulationDataStructure.h @@ -431,6 +431,7 @@ Inserts a vertex in the triangulation data structure by subdividing the Vertex_handle insert_in_facet(const Facet & ft); /*! +\cgalAdvancedFunction \cgalAdvancedBegin Removes the full cells in the range \f$ C=\f$`[s, e)`, inserts a vertex at position `p` and fills the hole by connecting diff --git a/Triangulation_2/doc/Triangulation_2/CGAL/Constrained_triangulation_plus_2.h b/Triangulation_2/doc/Triangulation_2/CGAL/Constrained_triangulation_plus_2.h index 7394806f275..fc74ede4668 100644 --- a/Triangulation_2/doc/Triangulation_2/CGAL/Constrained_triangulation_plus_2.h +++ b/Triangulation_2/doc/Triangulation_2/CGAL/Constrained_triangulation_plus_2.h @@ -406,7 +406,7 @@ The simplification algorithm uses the following types and functions. /*! \cgalAdvancedBegin -An iterator on the points of the of the original constraint +An iterator on the points of the original constraint before simplification steps are applied. The value type of this iterator is `Point`. A \link Constrained_triangulation_plus_2::Vertices_in_constraint_iterator `Vertices_in_constraint_iterator`\endlink can be converted into a `Points_in_constraint_iterator`, but not the other way around. @@ -416,6 +416,7 @@ typedef unspecified_type Points_in_constraint_iterator; /*! +\cgalAdvancedFunction \cgalAdvancedBegin Returns an iterator to the first point on the constraint before any simplification step. \cgalAdvancedEnd @@ -423,6 +424,7 @@ Returns an iterator to the first point on the constraint before any simplificati Points_in_constraint_iterator points_in_constraint_begin(Constraint_id cid) const; /*! +\cgalAdvancedFunction \cgalAdvancedBegin Returns an iterator past the last point on the constraint before any simplification step. \cgalAdvancedEnd @@ -430,6 +432,7 @@ Returns an iterator past the last point on the constraint before any simplificat Points_in_constraint_iterator points_in_constraint_end(Constraint_id cid) const ; /*! +\cgalAdvancedFunction \cgalAdvancedBegin Removes the vertex at `vicq` from the constraint and the triangulation. The point of that vertex remains stored in the sequence of original points @@ -452,6 +455,7 @@ void simplify(Vertices_in_constraint_iterator vicq); /*! +\cgalAdvancedFunction \cgalAdvancedBegin Removes the original points that correspond to vertices in the constraint `cid` which have been removed by the `simplify()` function. @@ -462,6 +466,7 @@ remove_points_without_corresponding_vertex(Constraint_id cid); /*! +\cgalAdvancedFunction \cgalAdvancedBegin Removes all original points that correspond to vertices in the constraints which have been removed by the `simplify()` function.