Merge branch 'releases/CGAL-4.13-branch'

This commit is contained in:
Laurent Rineau 2019-03-07 14:31:16 +01:00
commit f5836b2206
18 changed files with 82 additions and 27 deletions

View File

@ -556,11 +556,11 @@ namespace internal {
(boost::make_transform_iterator (input.begin(), CGAL::Property_map_to_unary_function<ItemMap>(item_map)),
boost::make_transform_iterator (input.end(), CGAL::Property_map_to_unary_function<ItemMap>(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()));
}
@ -591,13 +591,15 @@ namespace internal {
{
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<ItemRange, ItemMap, Classifier, NeighborQuery, LabelIndexRange>

View File

@ -266,6 +266,8 @@ ALIASES = "sc{1}=<span style=\"font-variant: small-caps;\">\1</sp
"cgalAdvancedEnd=\htmlonly </div> \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}=<div class=\"PkgImage\"> \n \image html \1 \n</div>" \
"cgalPkgSummaryBegin=<div class=\"PkgSummary\">" \

View File

@ -267,6 +267,8 @@ ALIASES = "sc{1}=<span style=\"font-variant: small-caps;\">\1</sp
"cgalAdvancedEnd=\htmlonly[block] </div> \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}=<div class=\"PkgImage\"> ^^ \image html \1 ^^</div>" \
"cgalPkgSummaryBegin=<div class=\"PkgSummary\">" \

View File

@ -251,6 +251,8 @@ ALIASES += "cgalAdvancedBegin=\htmlonly <div class=\"CGALAdvanced\"> <div>Advanc
ALIASES += "cgalAdvancedEnd=\htmlonly </div> \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."

View File

@ -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)

View File

@ -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())
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';
}
}

View File

@ -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

View File

@ -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,6 +1016,7 @@ public:
/*!
\cgalAdvancedFunction
\cgalAdvancedBegin
creates a new vertex `v` and use it to star the hole
whose boundary is described by the sequence of edges
@ -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.

View File

@ -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 <class Property>
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_map> Index_back_inserter;
/// \cgalAdvancedType
/// \cgalAdvancedBegin
/// Back inserter on points
/// \cgalAdvancedEnd
typedef Property_back_inserter<Point_map> Point_back_inserter;
/// \cgalAdvancedType
/// \cgalAdvancedBegin
/// Property map for pushing new points
/// \cgalAdvancedEnd
typedef Push_property_map<Point_map> Point_push_map;
/// \cgalAdvancedType
/// \cgalAdvancedBegin
/// Property map for pushing new vectors
/// \cgalAdvancedEnd
typedef Push_property_map<Vector_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<Property_map<T> > (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
*/

View File

@ -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<Traits, SpatialSeparator>`
\cgalHasModel `CGAL::Median_of_rectangle<Traits, SpatialSeparator>`

View File

@ -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
@ -483,6 +484,7 @@ 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

View File

@ -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 <typename Vb2>
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

View File

@ -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.

View File

@ -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

View File

@ -60,6 +60,7 @@ public:
/// @{
/*!
\cgalAdvancedFunction
\cgalAdvancedBegin
Implements the validity checks required by the concept
`TriangulationDSFullCell`.

View File

@ -40,6 +40,7 @@ public:
/// @{
/*!
\cgalAdvancedFunction
\cgalAdvancedBegin
Implements the validity checks required by the concept
`TriangulationDSVertex`. Does not implement additional checks.

View File

@ -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

View File

@ -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.