msteinbeck/tinyspline
FreeANSI C library for NURBS, B-Splines, and Bézier curves with interfaces for C++, C#, D, Go, Java, Javascript, Lua, Octave, PHP, Python, R, and Ruby.
About msteinbeck/tinyspline
TinySpline is a small, powerful library for interpolating, transforming, and querying NURBS, B-Splines, and Bézier curves. Written in ANSI C (C89) with a C++ wrapper, it provides auto-generated bindings for C++, C#, D, Go, Java, JavaScript, Lua, Octave, PHP, Python, R, and Ruby. Features include spline interpolation (cubic natural, centripetal Catmull-Rom), evaluation, knot insertion, Bézier decomposition, derivative, degree elevation, rotation minimizing frames, morphing, and JSON serialization. It is distributed under the MIT license and can be installed via package managers like Conan, NuGet, PyPI, and more.
Key Features
Pros & Cons
- Small footprint and high performance due to ANSI C core
- Extensive multi-language support through auto-generated bindings
- Comprehensive feature set for spline manipulation (NURBS, B-Splines, Bézier)
- MIT open-source license allows free use and modification
- Available via popular package managers (Conan, NuGet, PyPI, RubyGems, Maven, etc.)
- Primarily focused on spline mathematics; lacks higher-level graphics rendering features
- Documentation may be limited to examples and code comments