Module tessellate

Source
Expand description

Scalar reference tessellation of surfaces (ADR 0012).

§What this closes

axiolid-tessellation-contract declares a Tessellator trait that nothing implemented, so no curved face could ever become triangles. A B-rep with a cylindrical or spline face was unreachable, which is most curved geometry in a real building model.

§Method

Uniform parameter sampling with the step chosen from a measured sagitta, not a guessed segment count. For each parameter direction the maximum deviation of the chord from the surface is probed at the midpoint, and the step is halved until the deviation is within the chord budget or a caller budget is exhausted. That is the same contract flatten2 uses for curves, so a cylinder tessellated here and its silhouette circle flattened there agree on what a tolerance means.

Adaptive quad-tree refinement would use fewer triangles on surfaces with localised curvature. It is deliberately not done here: this is the reference implementation, and a uniform grid is the version whose output a human can predict and check by hand. An optimised backend may refine locally and be validated against this one.

Structs§

TessellationBudget
Sampling budget for one surface.
TessellationOutcome
A tessellated patch plus the evidence needed to judge it.

Functions§

tessellate_patch
Tessellate one bounded surface patch.