A small, powerful ANSI C library for interpolating, transforming, and querying NURBS, B-Splines, and Bézier curves with bindings for many languages.
TinySpline is an ANSI C library for creating, manipulating, and evaluating NURBS, B-Splines, and Bézier curves. It solves the need for a lightweight, cross-platform solution for spline computations in applications ranging from graphics to engineering. The library includes interpolation, transformation, and querying capabilities with bindings for numerous programming languages.
Developers and researchers working in computer graphics, CAD software, scientific visualization, game development, or any field requiring precise curve modeling and manipulation.
Developers choose TinySpline for its small size, extensive feature set, and broad language support, offering a performant and accessible alternative to larger, more complex spline libraries without sacrificing functionality.
ANSI 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.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides auto-generated bindings for over 10 programming languages including C++, Python, and JavaScript, enabling cross-platform integration without rewriting code, as detailed in the Installation section.
Written in ANSI C (C89) with a small footprint, prioritizing performance while maintaining comprehensive features, aligned with the library's philosophy of being small yet powerful.
Supports advanced operations like cubic natural and centripetal Catmull–Rom interpolation, Bézier decomposition, and rotation minimizing frames, covering most needs for spline manipulation as listed in Features.
Offers a C++ wrapper for an object-oriented programming model, making it easier to use in modern C++ projects, with examples provided in the Getting Started section.
The library is designed exclusively for NURBS, B-Splines, and Bézier curves, lacking built-in support for spline surfaces, which limits its use in full 3D modeling applications.
While pre-built binaries are available for popular languages, less common bindings may require compiling from source, as noted in the Installation section, which can be time-consuming.
The documentation is primarily focused on the C interface, and although it extends to other languages, users of bindings might need to infer usage from C examples, potentially increasing the learning curve.