Repository navigation
Boolean: connect lone contours by monotone chords instead of subdividing their faces #7209
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
Merged
+1,833
−453
Merged
Changes from all commits
Commits
Show all changes
34 commits
Select commit
Hold shift + click to select a range
0c0a095
Boolean: connect lone contours to their faces by monotone chords inst…
Grantim 531e6fd
getMonotonePlan on exact predicates: not bound, as PreciseCutPoint is…
Grantim 954df3a
Lone contours without exact predicates: the normal of the face from i…
Grantim 4b2d628
cutMesh: preciseOwnVert next to preciseOtherVert
Grantim c7364ef
Sweep: loops of 2 edges only for the monotone plan
Grantim 2659a05
Lone contours: a face whose plan fails stays in the mesh
Grantim 64c8cea
getMonotonePlan on exact predicates: loops with two vertices defined …
Grantim 6a45c11
Lone contours: normalized float normal, Boolean progress over the who…
Grantim b2a23d8
Lone contour tests: an otherwise uncut face, selfBoolean, the same ra…
Grantim 69a7160
cutMesh: one helper for the exact coordinates of a vertex of either mesh
Grantim 82d1166
Sweep: allowTwoEdgeLoops lets through the loops of 2 edges only
Grantim e0cc178
getMonotonePlan on exact predicates: all points added and checked bef…
Grantim 8a553ca
Boolean: closed contours of two points are dropped before the cut
Grantim c484b3c
Lone contours: the contour points of the vertices only for the exact …
Grantim eec0a63
Lone contour cut tests: open contours, ForceFill::Good
Grantim 4522489
Terrain embedding: the structure is cut with the boolean's exact sort…
Grantim 06b2581
Sweep: findClosestToFront falls through to a valid index
Grantim 748f222
Boolean: the precut outputs take the meshes after the cuts
Grantim 084b993
Lone contour tests: rotated rigidB2A, nested islands, mapper, exact slit
Grantim 44aaabc
getMonotonePlan docs: the loops of all the holes of one face
Grantim dc34a45
Lone contour tests: braces around the gtest macros under if and else
Grantim 2dbe7e3
Terrain embedding: the last section of a wall contour ends at its fir…
Grantim 5ca06b8
Lone contours: a plan without chords is a failure
Grantim 465316e
cutMesh: the hole on the right of a path along an old edge maps to th…
Grantim 3e22a82
Lone contour tests: chords in the edge map, a crossing contour, a ver…
Grantim e6c9a2f
Boolean: the precut outputs carry the data for the boolean's exact cut
Grantim 329a164
Terrain embedding: the structure is cut with the precut output's sort…
Grantim 5779018
Terrain embedding: lone contours of the terrain cut are connected by …
Grantim 5bb123e
Deprecate the lone contour functions the boolean no longer uses
Grantim 52bac53
Lone contours without exact predicates: a face of zero area is reported
Grantim 9f9115c
Sweep: stops after an event in which the exact predicates failed
Grantim 60ee8c2
Boolean: the sorting data and the copies only for the meshes actually…
Grantim 05ba9cc
CutTrianglePredicates: crossings defined alike are told apart by the …
Grantim 11a120b
Lone contours: the crossings of a multiple edge are told apart by the…
Grantim File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment says that inconsistent
CutTrianglePredicates(a failure found during the sweep) get here and the run is discarded. Yetassert( false )stays, so Debug, iterator-debug and sanitizer builds abort on input that Release handles. One example is the case named ingetMonotonePlan: three crossings of one cut on one line, which theaddPointchecks miss.That comment also says the sweep "goes on with arbitrary answers that can break it", so other sweep asserts and invariants can fire too. Could the sweep stop as soon as
preds.failed()is set, or could this return a failure that the caller checks, instead of an index chosen to be in range?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done in 9f9115c:
SweepLinePredicateshas an optionalfailed().findIntersectionsandmakeMonotonestop with a failure after any event that set it, and also before the first event. This assert now requires it to be set. The other asserts reachable within one event depend only on topology.