Skip to content
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

Merged
merged 10 commits into from
Apr 6, 2021
Merged

Add mollification step to avoid degenerate faces #5037

merged 10 commits into from
Apr 6, 2021

Conversation

oboes
Copy link
Contributor

@oboes oboes commented Sep 29, 2020

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 value delta, 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) where min_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

  • Affected package: Heat_method_3
  • Issue solved: fix issue #5010

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.
@lrineau lrineau added the CLA/CAA The contributor must sign a CLA or a CAA so that the contribution can be merged into CGAL label Sep 29, 2020
@MaelRL MaelRL added Enhancement Pkg::Heat_method_3 Not yet approved The feature or pull-request has not yet been approved. labels Oct 1, 2020
@lrineau lrineau removed the CLA/CAA The contributor must sign a CLA or a CAA so that the contribution can be merged into CGAL label Oct 5, 2020
…launay_triangulation_3.h

Co-authored-by: Sebastien Loriot <sloriot.ml@gmail.com>
@maxGimeno
Copy link
Contributor

What is waiting for approval ?

@sloriot
Copy link
Member

sloriot commented Oct 20, 2020

@janetournois will have a look.

@maxGimeno maxGimeno added this to the 5.3-beta milestone Oct 20, 2020
@lrineau lrineau requested a review from janetournois October 21, 2020 07:47
@lrineau
Copy link
Member

lrineau commented Nov 13, 2020

@janetournois Is this PR replaced by #5033?

@janetournois
Copy link
Member

janetournois commented Nov 13, 2020

@lrineau No it is not.
This PR is coming soon to improve #5033

@janetournois
Copy link
Member

Thanks @oboes for this PR!
Can you please add me to your github collaborators for CGAL, so I can push to the branch?

@janetournois
Copy link
Member

Thanks @oboes !

@maxGimeno
Copy link
Contributor

There are conflicts with master

@sloriot
Copy link
Member

sloriot commented Mar 22, 2021

@janetournois what is the status of this PR? Ready to be tested?

…-oboes

# Conflicts:
#	Heat_method_3/test/Heat_method_3/CMakeLists.txt
@lrineau lrineau removed the Conflicts label Mar 22, 2021
@janetournois
Copy link
Member

It's ready (again) to be tested

@lrineau
Copy link
Member

lrineau commented Mar 22, 2021

@janetournois What is the TODO label about?

@janetournois janetournois removed the TODO label Mar 22, 2021
@janetournois
Copy link
Member

nothing left :-) @lrineau

@maxGimeno
Copy link
Contributor

@MaelRL This PR is marked as "not yet approved", is it still the case ?

@MaelRL
Copy link
Member

MaelRL commented Mar 24, 2021

@janetournois worked on it and is done with it, so I guess it can be cleared.

@maxGimeno maxGimeno added Under Testing and removed Not yet approved The feature or pull-request has not yet been approved. labels Mar 24, 2021
@maxGimeno
Copy link
Contributor

@lrineau lrineau added rm only: ready for master For the release team only: that indicates that a PR is about to be merged in 'master' and removed Ready to be tested Under Testing labels Apr 6, 2021
@lrineau lrineau merged commit c904cb7 into CGAL:master Apr 6, 2021
@lrineau lrineau removed the rm only: ready for master For the release team only: that indicates that a PR is about to be merged in 'master' label Apr 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Infinite loop when building intrinsic Delaunay triangulation in Heat_method_3
6 participants