This reverts commit 06d272169f.
There may be an inconsistency between exact and inexact computations,
in the facet encroachment rule
This code was leading to a local infinite refinement loop during cells refinement
## Summary of Changes
- Add a dummy point generator that is agnostic to the periodic domain's
geometry, allowing P3M3 to handle non-cubic domain.
- Add an example of P3M3 running on polyhedral domains.
- Fix a few issues in SMDS_3's tet soup reading relating to
non-manifoldness + general IO code speed improvements.
- Fix a few issues in P3M3's medit output and always duplicate facets to
reduce the quantity of non-manifoldness occurences.
- Fix an issue with including Mesh_3 headers before P3M3's.
- Fix periodic point projection (for Mesh_3 optimizers) badly computing
the projection direction
- Robustify a handful of P3M3 functions that were using intermediate
constructions rather than the <Point, Offset> API (which uses filtered
predicates and thus yields proper robustness)
- Misc minor code cleaning / modernization
ToDo:
- [x] Check if some medit IO issues are fixed
- [x] Add non-manifoldness flag to read_MEDIT
- [x] Fix value of orthosphere_radius_threshold
- [x] Check calls of insert_dummy_points() (use generic)
- [x] Check doc of P3M3 about cubic domains requirement
Not done:
- [ ] Fix sharp features for periodic polyhedral domains (problems due
to changing weights creating cover change...). Code:
https://gist.github.com/MaelRL/357c52dc04e16a162f13a3c6860a1398; WIP
diff: https://gist.github.com/MaelRL/f98809964acffbacb6d3f42793e2654e
## Release Management
* Affected package(s): `Mesh_3`, `P3M3`, `P3T3`, `SMDS3`
* Issue(s) solved (if any): Fix#6997, Fix#7214
* Feature/Small Feature (if any): TODO
* License and copyright ownership: no change
This file was duplicated from BOOST 1.64 because it appeared in a boost
release that was younger than the oldest boost release supported by CGAL
when the file was first required.
The minimum boost version (1.57) now required by CGAL is younger
than the version in which the file appeared in boost (1.51)
and it can thus be removed.
```
include/CGAL/Triangulation_hierarchy_3.h:163:23: error: invalid use of 'this' at top level
noexcept(noexcept(this->Tr_Base::swap(tr)))
^~~~
```
That is actually the subject of a C++ Defect:
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1207
Anyway, this was used only for the `noexcept` specification of `swap`
functions, and I no longer use `swap` for the move semantic. I can
remove those noexcept` specifications.
- For `Triangulation_3`, the rule-of-zero cannot be used, because of
the infinite vertex. A special copy-constructor and copy-assignment
operators are required. But one can `= default the move-constructor
and move-assignment operator, as well as the destructor.
- For `Delaunay_triangulation_3`, the rule-of-zero is
sufficient. Nothing to do.
- For `Regular_triangulation_3`, the `hidden_point_visitor` data
member is a function that is constructed with the `this` pointer, so
the rule-of-zero cannot be used. Probably the move-constructor
and move-assignment operator could be explicitly defaulted.