Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Improve stopping conditions in surface meshing (and throughout GC)

Abierto
#141 0 comentarios 0 reacciones 1 asignado Ver en GitHub

@MarkGillespie ya está trabajando en esto.

Desde el 21/1/2023.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

design-decision

This issue addresses a small road bump with the remesh function, but is more generally something good to think about throughout the design of GC: how should stopping criteria be determined, and what control should be provided to the user?

Issue

Currently the stopping condition in remesh is

    if ((nFlips == 0) && (flowDist < 0.01)) break;

Even though the quantity flowDist is normalized by the number of mesh vertices, the constant (0.01) is pretty arbitrary and often does not yield the desired/expected behavior.

Especially annoying is that one can't get more smoothing by increasing the maxIterations option, since the optimizer will quit as soon as flowDist is less than 0.01.

Proposed Solution

Three possibilities come to mind:

  1. Add an additional option relativeStoppingTolerance which is used in place of the magic constant 0.01. This is a no-brainer.
  2. Measure the relative norm of the gradient. This requires us to assign a variational interpretation to the smoothing operations, but that seems reasonably straightforward: Laplacian smoothing is minimizing Dirichlet energy, restricted to tangential motions; circumcentric smoothing is likewise minimizing the optimal Delaunay energy among tangential motions. (I believe de Goes et al discuss how to think about ODT in terms of energy minimization in the non-flat case.)
  3. Add an additional option minIterations that forces the optimizer to take at least this many iterations. In general, such a parameter is good to have: no matter how careful you are with designing stopping criteria, there tend to be cases where this automatic condition stopped to early—or at very least, the user would like to see what happens if you "just keep on going." For instance, in the remeshing case, it's clear just from looking at the output meshes that they are not always as smooth/regular as they could be.
Lenguaje dominante
C++
Estrellas
1.3k
Forks
183
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de nmwsharp/geometry-central

Todos los issues de nmwsharp/geometry-central

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.