Improve stopping conditions in surface meshing (and throughout GC)
@MarkGillespie がすでに取り組んでいます。
2023年1月21日 から。
評価
この issue はまだ評価されていません。
説明
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:
- Add an additional option
relativeStoppingTolerancewhich is used in place of the magic constant0.01. This is a no-brainer. - 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.)
- Add an additional option
minIterationsthat 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.
- 主要言語
- C++
- スター
- 1.3k
- フォーク
- 183
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトの環境構築ファイルはまだ確認していません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
nmwsharp/geometry-central のほかの issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
nmwsharp/geometry-central#256 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
nmwsharp/geometry-central#255 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
nmwsharp/geometry-central#253 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 57/100
nmwsharp/geometry-central#247 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
nmwsharp/geometry-central#246 ·
nmwsharp/geometry-central の issue をすべて見る
似ている issue
-
category:port-update
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1〜3時間 初心者へのやさしさ 88/100
tensorflow/tflite-micro#3784 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
agentic-workflows automation
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
tenstorrent/tt-metal#57946 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
aristocratos/btop#1857 ·
メンテナーはふだん 3 日以内に返信