public interface IChartDecompositionHow a region that failed its distortion bound is broken into smaller ones.
Remarks
docs/plan/42 § D3's plug point, and the only one this library has. The charter is PartUV's shape — decompose, flatten, accept or recurse, merge back — and the one part of PartUV that cannot be taken is the top of it, because PartField is a learned decomposition. So the recursion is kept and the decomposition is made replaceable, with a classical concavity-driven default that owes nobody anything.
⚠ The default path never calls an implementation of this. Leaving Decomposition null selects the built-in decomposition, which is an approximate convex split over the dual graph weighted by dihedral concavity and surface occlusion. This interface exists so that a learned part field can be dropped in behind it under § D14's rules — it proposes and never decides, because whatever comes back is still flattened, still measured, and still has to pass DistortionThreshold before it is kept. A bad decomposition costs chart quality and can never cost validity.
⚠ An implementation may decline, and declining is not a failure. Returning null, an empty list, or anything that does not describe at least two non-empty parts falls back to the built-in decomposition for that region alone. A proposer that only understands some shapes is a useful proposer.
Methods (1)
IReadOnlyList<int>? Decompose(EditMesh mesh, IReadOnlyList<int> faces, int parts)Breaks a region of faces into parts.
Used by (4)
- AlternatingVixen.Geometry.Uv.Tests
- CharterVixen.Geometry.Uv
- DecliningVixen.Geometry.Uv.Tests
- UvSettingsVixen.Geometry.Uv