-
-
Notifications
You must be signed in to change notification settings - Fork 119
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The rewrite of the edge sweeping code uses the builder API, making the code more compact, and making the sweep code for `Vertex` redundant (it can be removed in a follow-up commit. The rewrite of the face sweeping code is less of a slam dunk. It adds a fair bit of complexity over the previous version, but I think this is okay, due to two factors: 1. I believe that this complexity can be reigned in later, once the core data structures have been simplified. This is an ongoing effort. 2. It fixes existing bugs. See below. The initial reason for the rewrite was the ongoing `HalfEdge` cleanup: As part of the celanup, the `Reverse` implementation for `HalfEdge` needs to be removed, and this new code no longer uses it. However, as it turned out, there is a significant side effect: The new code generates different (but still correct) curves, which are less uniform than the ones generated by the old code, which happens to trigger approximation failures that exposed existing bugs. Those bugs basically boil down to the previous sweep code generating coincident edges that don't refer to the same global edge. This was already known (#1162), but so far a proper fix was blocked on missing validation code, to ensure all instances of this bug are fixed. That validation code still needs to be written, but the approximation failures already did a pretty good job of guiding me towards the various sources of the bug.
- Loading branch information
1 parent
7f7a675
commit ccd99b4
Showing
2 changed files
with
190 additions
and
169 deletions.
There are no files selected for viewing
This file contains 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.