This small feature adds a new constructor in Labeled_mesh_domain_3 and
a new function wrapper. A Labeled_mesh_domain_3 can be built from an
Iso_cuboid_3 now.
(cf. https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/New_constructor_in_Label_mesh_domain_3_and_new_function_wrapper)
The new wrapper, Implicit_multi_domain_to_labeling_function_wrapper, is a
helping class to get a function with integer values labeling the
components of a multi-domain. This small feature was successfully tested in
the internal release CGAL-4.5-Ic-45.
Approved by the Release Manager.
Conflicts:
Installation/changes.html
So far, the files
<CGAL/Mesh_3/Detect_features_in_polyhedra.h>
<CGAL/Mesh_polyhedron_3.h>
were assuming that the Patch_id was an integral type. Now they assumes
that it is either an integral type, or a pair of integral types.
In the deprecated class Implicit_vector_to_labeled_function_wrapper,
an implicit conversion from an unsigned int to a signed int caused a warning.
On windows, pragma message needs parenthesis.
CGAL/Mesh_3/Labeled_mesh_domain_3.h
CGAL/Mesh_3/Implicit_to_labeled_function_wrapper.h
So, some branches in development using theses features won't be broken.
Fix warnings about unused variables/parameters
Use pragmas, when that is needed (for Boost named parameters)
Tested in CGAL-4.5-Ic-7.
Approved by the Release Manager.
In Implicit_multi_domain_to_labeling_function_wrapper, the point
type is deduced if ImplicitFunction is a pointer function, else it must
be a nested type of ImplicitFunction.
BGT isn't required anymore for this wrapper.
The constructor of Implicit_multi_domain_to_labeling_function_wrapper taking
only one argument has a new way for auto-making the vector of vector of
positions. In this case, the union of the components equals to the union
of the functions.
Benjamin Kehlet reported on CGAL-discuss (Tue, 25 Mar 2014 13:45:24
+0100) that Mesh_3 was not able to mesh the simple following OFF:
OFF
4 4 0
0 0 0
0 0 1
0 1 0
1 0 0
3 3 1 2
3 0 1 3
3 0 3 2
3 0 2 1
The unit tetrahedron!!
The bug was in the robust weighted circumcenter traits. The traits
checks that the circumcenter of four points is at least in the circum
sphere of the four points. But for weighted points, that is
"power_test" that must be tested, instead of "side_of_oriented_sphere".
This branch fixes a potential bug, that the facet surface center
is sometimes not updated properly in mirror_facet(f) when it is in f.
Tested in testsuite CGAL-4.4-Ic-155
Approved by the release manager
The user can indicate more precisely which components he wants.
For each component that the user want, he must provide the matching
vector of signs. All these vector of positions must be put in a vector
passed as second parameter to the constructor of that wrapper.
Doc and examples are updated.
The return type optional<tuple...> leads to the crash
One workaround had been to move the body of the function
into the class.
As the function is private I instead return through a reference instead.
This wrapper allow the user to define a domain following several functions.
A point will be in the domain if the result sign of each function
matches the ones expected by the user.
Periodic domain isn't based on Implicit_mesh_domain_3 anymore.
So, these modifications making Implicit_mesh_domain_3 compatible with
periodic cases are obsolete.
In periodic cases, we may want to pass an bouding box with exact coordinates.
But, this is impossible to do with Bbox_3 which always has double
coordinates.
This wrapper allow the user to define a domain following several functions.
A point will be in the domain if the result sign of each function
matches the ones expected by the user.
This branch fixes a bug in the sliver perturber.
It introduces some new data structures to backup the metadata
stored in cells before each perturbation. This allows to
recover these data without recomputing them in case the move
is reverted.
The bug fix comes from the fact that rec-omputed values might
have been different after the move from what they were before the
move, in a tetrahedron which is the same but for which the
Cell_handle is new.
Approved by the release manager.
In CGAL-4.2 and previous, when a facet f was between finite cells c1,
and c2, with different subdomain indices, the surface patch index of f
was the pair { c1->subdomain_index(), c2->subdomain_index() }, say the
pair (1, 2). Since CGAL-4.3, with
CGAL_MESH_3_NO_LONGER_CALLS_DO_INTERSECT_3, the Do_intersect functor of
the domain is no longer called, and only Construct_intersection. If the
bissection eventually found out that the bissection ended up between the
volumes labeled 1 and 3, then the returned surface patch index was
{1,3}, instead of {1,2}. That commit fixes that "bug", and restores
the behavior of CGAL-4.2.