Previously, each file was using its own implementation of the "compare
handle" function object. This commits adds a new class
`Compare_handles_with_or_without_timestamps` that checks the presence of
`Has_timestamp` in the pointed type, and provides a different
`operator()` depending on that.
the protecting balls placement algorithm is now allowed to use the sizing field
during 3 iterations, instead of 1. This allows it to fix most of the
forbidden intersections of spheres before switching to the constant size case
this commit relaxes the condition set
in commit 051c55b08f2bfe5047eef1be1f70f0192b1c5c60
- set the dimension of vertices without connectivity to -1 (fixes the BBox's problem)
- re-center the cut-plane after every type of load (fixes the cutplane problem)
warning : putting 'end' out of the for loop end condition evaluation is
important. It avoids to continue the loop on newly added things
The condition on the size of `incident_cells_map` inside `assign_neighbors`
is not correct anymore, because there are 4 facets per finite cell
+ 1 facet per infinite cell (boundary facets)
the index does not matter, and the orientation depends on the parity
of i.
Here it does not matter much because infinite cells will not be used,
but let's keep the code as generic as possible
The Boolean `nonlinear_growth_of_balls` can be set by the
non-documented API:
- the function `Protect_edges_sizing_field::set_nonlinear_growth_of_balls()`,
- the Boolean `Mesh_3_options.nonlinear_growth_of_balls`.
Of course the demo sets that Boolean when possible.
- In `Polyhedral_mesh_domain_3`:
- The handling of `p_rng_` is now simpler: the `Random` generator is
only created just before its use. That reduces code duplication
between constructors.
- Use `add_primitives()` and `add_primitives_to_bounding_tree()`, and
`build()` to reduce the code duplication between all constructors.
- In `Polyhedral_mesh_domain_with_features_3`:
- All polyhedra are stored in a data member `this->stored_polyhedra`.
- Always construct the base class without any polyhedron, then use
`add_primitives()` and `add_primitives_to_bounding_tree()`, from
polyhedra of `this->stored_polyhedra`.
- All constructors are inlined in the class (now that their code is
shorter).
- Fix the compilation of `detect_borders()`.