-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add mollification step to avoid degenerate faces #5037
Conversation
Degenerate faces (which can cause an infinite loop in `loop_over_edges`) are handled by using the mollification step described in section 4.5 of N. Sharp & K. Crane "A Laplacian for Nonmanifold Triangle Meshes" (2020). The tolerance value is set to 1/1000 of the minimum non-zero edge length.
Heat_method_3/include/CGAL/Heat_method_3/internal/Intrinsic_Delaunay_triangulation_3.h
Outdated
Show resolved
Hide resolved
…launay_triangulation_3.h Co-authored-by: Sebastien Loriot <sloriot.ml@gmail.com>
What is waiting for approval ? |
@janetournois will have a look. |
@janetournois Is this PR replaced by #5033? |
Thanks @oboes for this PR! |
thanks to mollification step
Thanks @oboes ! |
There are conflicts with master |
@janetournois what is the status of this PR? Ready to be tested? |
…-oboes # Conflicts: # Heat_method_3/test/Heat_method_3/CMakeLists.txt
It's ready (again) to be tested |
@janetournois What is the |
nothing left :-) @lrineau |
@MaelRL This PR is marked as "not yet approved", is it still the case ? |
@janetournois worked on it and is done with it, so I guess it can be cleared. |
successfully tested in https://cgal.geometryfactory.com/CGAL/testsuite/results-5.3-Ic-98.shtml |
Summary of Changes
This PR fixes the infinite loop problem from issue #5010 by implementing the "mollification" step from
N. Sharp & K. Crane "A Laplacian for Nonmanifold Triangle Meshes" (2020) (section 4.5).
Basically, the problem arises from degenerate faces (triangles) in the input mesh. These degenerate faces can be "removed" by increasing the length of all edges in the mesh by a small, constant amount
epsilon
until no input triangle is degenerate. This constant depends on a user-defined tolerance valuedelta
, which is the tolerance with which we want the (strict) triangle inequality to hold in each triangle. According to the paper, this method will not significantly distort the Laplacian of the mesh.The paper does not discuss the choice of the user-defined tolerance
delta
. I decided to use an arbitrary value of(min_length*1e-4)
wheremin_length
is the minimum non-zero edge length in the mesh. This seems to work well enough, and in any case if the mesh is already free of degenerate faces to begin with, the mollification step should not change the end result.Release Management