Topological containment queries: “is this point inside this face/shell?”
— distinct from crate::contains, which tests raw-geometry (“does this
3-D point lie on this NURBS surface/curve”) without any awareness of
trimming loops or topology.
Incremental mutation of an existing crate::Model: unlike
Model’s own insert_* methods (which only ever add a brand-new,
unconnected entity), everything here restructures or replaces what’s
already there.
Topology that is no longer needed, taken out of a body described as a
BodySpec (BodySpec::merged): faces that lie on one surface made
one, and vertices between two edges of the same two faces dropped, the
edges made one.
Test fixture — this crate’s tests, and others’ with the testing
feature: a plain axis-aligned unit-cube-shaped solid, described whole
and built at once (see crate::build).
A face’s loop in its surface’s parameter plane: the signed area it
encloses, integrated exactly from its pcurves (loop_signed_area),
and a polygon sampled along them, for the rasterizer to triangulate
(sample_loop_to_polygon).
Whole-model consistency checks. Each check lives in its own file, one
check per file. Every check function takes (params, errors, model) and pushes
its own violations onto errors rather than returning on the first one,
so validate always runs every check and reports everything wrong in
one pass.