## Summary of Changes
A few improvements for the experimental polygon mesh snapping functions
of PMP.
TODO:
- Add new regression tests
## Release Management
* Affected package(s): `PMP`
* Feature/Small Feature (if any): n/a
* License and copyright ownership: no change
## Summary of Changes
While trying to remove caps, `PMP::remove_almost_degenerate_faces()`
does a Delaunay-like check before allowing the edge flip. Unfortunately,
the current criterion (see https://github.com/CGAL/cgal/pull/7125) can
prevent some edge flips that would resolve a cap because sometimes this
Delaunay-like criterion can prefer a cap if it is balanced by a very
small angle on the other side. Then you have alpha + beta < 180 and
you're stuck with the cap, but maybe you would have liked to flip still
because the largest angles created by a flip would be e.g. 120 and 120,
which is not that bad.
However in this function, we are maybe not so interested in having
nicely shaped elements as much as we are trying to remove the worst
elements. So this PR tries to improve the worst cap angle instead, by
checking only (and greedily) if we do not create a worse cap angle when
we flip.
This produces better results for the cases that were problematic with
alpha + beta < 180
## 1

## 2

## 3

## Release Management
* Affected package(s): `PMP`
* Issue(s) solved (if any):
* Feature/Small Feature (if any): -
* License and copyright ownership: no change
otherwise the tolerance (esp. the automatic one using 0.9 * min_inc_edge_l)
can grow too large and allow snapping to a neighbor-of-neighbor edge,
which obviously we need to avoid.
This is because if meshes are different, the target edge is fixed.
But if we are self-snapping, the edge might move because one of
its extremity might itself have been a vertex involved in vertex-edge
snapping.
## Summary of Changes
This PR fixes various typos across multiple packages. The changes
include:
* **Variable Names:** Corrected local variable names (e.g.,
`list_lenght` → `list_length`, `inital_nb_pts` → `initial_nb_pts`) in
CMake scripts and C++ headers.
* **Header Guards:** Fixed a typo in the header guard for
`Edge_length_cost.h` to match the filename.
* **Documentation & Comments:** Fixed spelling errors in comments,
string literals, and documentation files (e.g., `dimensionnal` →
`dimensional`, `explicitelty` → `explicitly`).
## Release Management
* Affected package(s): Installation, Point_set_3,
Polygon_mesh_processing, Surface_mesh_simplification, SMDS_3,
STL_Extension, Stream_support, TDS_2, Triangulation_2, Triangulation_3
* Issue(s) solved (if any):
* Feature/Small Feature (if any):
* Link to compiled documentation (obligatory for small feature):
* License and copyright ownership:
This PR fixes multiple instances of the doubled word "the" (e.g., "the
the") found in various header files, documentation, and comments.
No code logic is changed; this is purely a documentation and comment
cleanup to improve readability.
Fix case of non triangular faces having vertices tangent to the
clip/refine plane
+ clip volume with coplanar faces
## TODO:
- [x] clean up and rebase
- [x] add test cases
- [x] add comments in the code
checking with num_halfedges(tm) means this only applies
to something like union of triangular connected components.
And if we change to counting the number of border halfedges,
then we might as well just rely on the O(1) dynamic property map.