Skip to content

Robust isolines#2251

Merged
alecjacobson merged 2 commits intomainfrom
alecjacobson/isolines
Aug 24, 2023
Merged

Robust isolines#2251
alecjacobson merged 2 commits intomainfrom
alecjacobson/isolines

Conversation

@alecjacobson
Copy link
Copy Markdown
Contributor

Fixes #1245 and fixes #1336 and fixes #1290

The old isolines

  • ❌ had a confusing n parameter that tried to pick n isoline values between the min and max,
  • ❌ didn't have a way of selecting isoline segments by value
  • ❌ tried to numerically merge vertices
  • ❌ segments were in arbitrary orientation

This new one

  • 😎 create topologically valid isoline polylines
  • 😎 takes isovalues as input directly
  • 😎 outputs a field indicating which segments belong to which value
  • 😎 segments are consistently oriented
  • 😎 is a bit fancier than a run of the mill marching triangles: it takes special care to handle constant regions of the scalar field, mesh boundaries, and lines that pass exactly through vertices.

It's reasonably fast. Could be improved but leaving that for another day. For now at least the edge data-structures can be precomputed.

Screen Shot 2023-08-24 at 4 02 24 PM

@alecjacobson alecjacobson merged commit 75209c5 into main Aug 24, 2023
@alecjacobson alecjacobson deleted the alecjacobson/isolines branch August 24, 2023 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Isoline at any location How to get one of the all isolines? std::isolines issues

1 participant