A very limited Swift port of algorithms from TiGL (DLR's geometry library for parametric aircraft design, Apache-2.0) for the OCCTSwift ecosystem. Not affiliated with or endorsed by DLR.
B-spline section compatibilization + skinning — the algorithms production lofting needs
before ThruSections-style skinning is numerically safe:
- degree elevation to a common degree (exact, geometry-preserving)
- knot-vector unification by exact knot insertion
- reparametrization across a section family
- kink-knot insertion (degree-multiplicity knots at feature parameters — corners survive fitting)
- a generalized Schoenberg–Whitney rank pre-check (decline ill-posed skinning with evidence, instead of building a numerically wild surface)
- curves-to-surface skinning over compatibilized sections
This is a port of the ideas and algorithm structure of TiGL's CTiglBSplineAlgorithms /
CTiglCurvesToSurface onto OCCTSwift's Swift-native geometry API — not a build of the TiGL
library (which targets older OpenCASCADE lines and carries CPACS/TiXI machinery out of scope
here). If you need TiGL, use TiGL.
0.1.0 — the pure compatibilization slice. Landed, driven by OCCTReconstruct's shell-reconstruction workstream (issue #240 there): degree elevation, exact knot union, C0 kink-knot insertion, the Piegl–Tiller averaged interpolation knot vector, the generalized Schoenberg–Whitney rank pre-check, and the section-family compatibilization decision (structure-mismatch / rank-deficiency DECLINE with evidence). This slice is exact arithmetic over control points, so it carries no OCCT dependency — it builds and tests in isolation.
The curves-to-surface skinning bullet above lands in a later slice, when it returns the OCCTSwift
dependency (the B-spline primitives it needs already exist in OCCTSwift ≥1.11.1). API is pre-1.0 and
may change. The compatibilization is a reimplementation of the textbook methods (Piegl–Tiller The NURBS
Book; Wang et al. for Schoenberg–Whitney) that TiGL's CTiglBSplineAlgorithms also implements — see
NOTICE for DLR attribution.
Apache-2.0, matching upstream TiGL. See LICENSE and NOTICE (DLR attribution).