You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jun 19, 2026. It is now read-only.
Half-edges in a cycle must not intersect, if the shape that contains the cycle is to be valid. This is currently neither documented nor enforced.
There should be a validation check on the cycle level that makes sure that none of the half-edges with the cycles intersect.
Implementation
The new validation check should go into validate::cycle the existing check there (and the numerous checks in the sibling modules) can be used as inspiration on how to implement it.
Intersecting half-edges cause panic #2124 is related to a bug triggered by exactly what this issue is supposed to address. Once this issues has been addressed, we can probably close the other one too (at least we'd have to check).
Consider removing region interiors #2132 would simplify Region, reducing it to a having single cycle. If that were implemented, then implementing this issue would take care of all cycle intersection validation. If not, we'd need a follow-up issue to this one, to check for intersections between different cycles within a region.
Improve validation infrastructure #2157 is about a refactor of the validation infrastructure. If that were implemented first, that would change where the new validation check would go, and how specifically it would be implemented.
None of those other issues are blockers, but in case work on them is ongoing by the time this issue is picked up, this would require coordination of the work.
About
Half-edges in a cycle must not intersect, if the shape that contains the cycle is to be valid. This is currently neither documented nor enforced.
There should be a validation check on the cycle level that makes sure that none of the half-edges with the cycles intersect.
Implementation
The new validation check should go into
validate::cyclethe existing check there (and the numerous checks in the sibling modules) can be used as inspiration on how to implement it.Related Issues
There are a few related issues currently open:
Region, reducing it to a having single cycle. If that were implemented, then implementing this issue would take care of all cycle intersection validation. If not, we'd need a follow-up issue to this one, to check for intersections between different cycles within a region.None of those other issues are blockers, but in case work on them is ongoing by the time this issue is picked up, this would require coordination of the work.