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_DEMO_ACTIVATE_SHARP_FEATURES_IN_POLYHEDRAL_DOMAIN, the sharp
features are now detected and handled on polyhedral domains. The
drawback is that it disables the other oracles (implicit...) because
Triangulation and C3t3 are not compatible anymore (gives compilation
errors, which seem very difficult to solve).
Cherry-pick from:
commit 416691ef8a
Author: Clément Jamin <clement.jamin@inria.fr>
Date: Mon Sep 24 14:02:13 2012 +0000
from Mesh_3-parallel-cjamin
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.