Skip to content

axiolid-nurbs ​

General polynomial and rational B-spline analysis and transformation algorithms.

Latest release0.3.10 (2026-11-13)
crates.ioaxiolid-nurbs
Facadeaxiolid feature nurbs
Layeralgorithms (algorithm.parametric)
API documentationrustdoc · docs.rs
Sourcecrates/algorithms/parametric/nurbs/

Overview ​

Format-neutral algorithms over polynomial and rational B-spline curves and surfaces: differential geometry, exact shape-preserving transforms (knot insertion, reversal, splitting, Bezier decomposition, degree elevation), tolerance-bounded knot removal and degree reduction, interpolation, least-squares curve and surface approximation, lofting, certified projection, inversion and intersection queries, exact analytic curve and surface intersection, and verified periodic seams. Lossy operations measure their deviation and refuse above the caller's tolerance. It owns no importer, tessellator or file-format vocabulary, and it uses axiolid-evaluate for evaluation rather than reimplementing it.

Depends on ​

Changes ​

Latest release, 0.3.10 (2026-11-13):

Added ​

  • ExactCurveRefusal::Undecided: the roots along a traced section could not all be isolated with their multiplicity (a contact of order above eight, one rounding hides, or the work budget ran out). It says nothing of whether the curve meets the surface (#427).

Fixed ​

  • A traced section against a surface that touches it at a higher order (a cylinder osculating the section, a plane tangent at its extreme) no longer hangs. Roots are certified with their multiplicity up to order 8, where the enclosures resolve it, by a Rolle chain on det(grad F, grad H_j), the derivatives of the second field along the curve. Higher orders, contacts the enclosures cannot resolve (a flat stretch of a field next to crossings, often at orders 7 and 8 on trigonometric fields) and over-budget cases return Undecided instead of a guessed touch at the depth floor (#427).

Full history: crates/algorithms/parametric/nurbs/CHANGELOG.md

Released under the Mozilla Public License 2.0.