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.
This is still experimental. I noticed that ear triangulation calls RemoveTagged() for every ear and that function scans (copies?) the entire list of verticies. It also has to check IsEar() for the adjacent verticies afterward. I figured we can make a pass looking for chains of ears that form a sort of meta-ear and triangulate that independently, and only make one call to RemoveTagged() to dispose all those ears. This runs prior to the existing triangulation code (and only for flat surfaces) so it might be faster overall for very complex surfaces. It does tend to make better-formed triangles.
Still some bugs and odd cases to figure out.
The logic is not clear yet.
Haven't proven any practical benefit like speed improvement.
One odd thing I did notice. If you look at the mesh for a circle it can look less round when showing the triangles. It's not, but your eyes can trick you due to the structured lines.