Function loft_surface

pub fn loft_surface(
    sections: &[BSplineCurve<DVec3>],
) -> Result<BSplineSurface, GeomError>
Expand description

Loft a surface through ordered section curves.

Each section becomes a row of the control net, so the surface passes exactly through every section: at the section’s own u parameter the surface reduces to that curve. Section spacing along u is chord length between corresponding control points, matching the curve case.

Sections must share a degree and control-point count. Reconciling mismatched sections requires knot merging and degree elevation, and doing that implicitly would change the caller’s curves inside what looks like a pure construction – so it is refused, and the caller elevates explicitly with elevate_degree3.