[Question] robust geometric predicates, polygon triangulation #799
Replies: 2 comments 3 replies
-
Thank you! It's certainly a possibility, and one which I have not explored much. The main reason is that exact arithmetic (I'd consider robust geometry predicates to be a form of said) is how most geometry libraries have been made thus far, and I've been underwhelmed by their robustness. I was introduced to computational geometry by Julian Smith's paper, which made me more inclined to look for inexact solutions instead. I also heard anecdotally that exact arithmetic has a serious performance penalty. The most fundamental reason I think exact geometry will be problematic is that the internal representations are not exact, nor are the input or output representations (all floating-point). This is why I use the concept of ε-valid, where we should gracefully handle input that is not quite geometrically valid as though it is perturbed enough to be valid. I think using exact geometry would make this more difficult. I don't really feel like writing a third triangulator, but if you want to contribute one and show how it's an improvement in robustness and performance, I'd be happy to review. |
Beta Was this translation helpful? Give feedback.
-
Not sure if I understand this correctly, but it seems that those robust predicates just eliminate errors when checking those predicates, and things like interpolation, matrix multiplication used in union or transformation can still introduce errors. When there is such error, polygons may be self-intersecting and cannot be triangularized even if there is some way to use the robust predicates? |
Beta Was this translation helpful? Give feedback.
-
Hello, Emmett (@elalish),
I have recently discovered
manifold
and spent some time reading the documentation and the blog. I very much enjoyed the read and excited about the library. I hope to get to try it hands on in the nearest future. Thank you!When reading the part about "Polygon triangulation" I kept asking myself: could the degeneracy problems you are describing be solved by using robust adaptive floating-point geometric predicates? I can imagine how robust predicates can be useful for solving a handful of challenges faced when implementing robust Boolean operations on 3D meshes: not only for re-triangulating intersecting triangles but also for exactly detecting triangle-triangle intersections with all the possible edge cases.
Did you consider such predicates as part of the related work?
Sorry if this question is already answered by you somewhere. I did my best to search for an answer. I searched GitHub documentation, issues, discussions. I also searched in Julian M. Smith's dissertation and found that it only cites Schewchuk's "Lecture notes on geometric robustness" but in the context not directly related to the predicates.
P.S. I was hesitating whether this should be placed in Discussions, I hope it is okay to open this question as an Issue.
P.P.S
There are several ways of doing robust adaptive precision floating-point geometric predicates, but the most cited paper is probably this one.
Beta Was this translation helpful? Give feedback.
All reactions