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

Mesh smoothing #72

Open
13 of 15 tasks
lemmih opened this issue May 19, 2020 · 1 comment
Open
13 of 15 tasks

Mesh smoothing #72

lemmih opened this issue May 19, 2020 · 1 comment
Labels
help wanted Extra attention is needed

Comments

@lemmih
Copy link
Member

lemmih commented May 19, 2020

Many morphing algorithms rely on deconstructing polygons into triangles (aka triangulation). However, not all triangles are created equal and there's a lower angle limit where the algorithms break down. Floating point trigonometry is never exact and with long, skinny triangles, the noise drown out the signal.

Below are examples of the same algorithm trying to morph an 'S' into a 'C'. In the first GIF, polygon count is low, the triangles are reasonably sized, and the morphing works as intended. In the second GIF, there are a lot more triangles and they are much skinnier, leading to numerical problems and a jerky morph.

Working
Numerical problems

These numerical problems can be avoided by smoothing the mesh inside of the polygon.

Tasks necessary for mesh smoothing:

  • Half-edge data structure.
  • Half-edge convenience functions:
    • Splitting edges.
    • Moving nodes.
    • Flipping edges.
  • Metrics:
    • Average angle.
    • Minimum angle.
    • Angle ratio.
    • Length ratio.
  • Mesh smoothing:
    • Laplacian.
    • Angle-based.
    • Delaunay edge-flips.
    • Edge splitting.
@lemmih lemmih added the help wanted Extra attention is needed label May 19, 2020
@lemmih lemmih assigned lemmih and unassigned lemmih May 19, 2020
@lemmih
Copy link
Member Author

lemmih commented Jun 24, 2020

Raw mesh on the left, smoothed mesh on the right:
smoothing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant