Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
T

tinyspline

> 编程语言
Open source

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.

1.3K stars0 likes0 views
WebsiteGitHub

About

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.

TinySpline

TinySpline is a small, yet powerful library for interpolating, transforming, and querying arbitrary NURBS, B-Splines, and Bézier curves. The core of the library is written in ANSI C (C89) with a C++ wrapper for an object-oriented programming model. Based on the C++ wrapper, auto-generated bindings for C#, D, Go, Java, Javascript, Lua, Octave, PHP, Python, R, and Ruby are provided.

Table of Contents

  • License
  • Features
  • Installation
    • Pre-built Binaries
    • Compiling From Source
  • Getting Started
  • Documentation
  • Publications
  • Theoretical Backgrounds

License

MIT License - see the LICENSE file in the source distribution.

Features

  • Object-oriented programming model
  • B-Splines of any degree and dimensionality
  • Spline interpolation
    • Cubic natural
    • Centripetal Catmull–Rom
  • Evaluation
    • Knots
    • Sampling (multiple knots at once)
    • Equidistant points
    • Components (find y for given x)
  • Reparametrization by arc length
    • Mapping length knot
  • Knot insertion (refinement)
  • Sub-spline extraction
  • Bézier curve decomposition
    • (also known as subdivision)
  • Derivative
  • Degree elevation
  • Computation of rotation minimizing frames
  • Morphing
  • Serialization (JSON)
  • Vector math

Installation

Pre-built Binaries

Releases can be downloaded from the releases page. In addition, the following package manager are supported:

Conan (C/C++):
https://conan.io/center/tinyspline

NuGet (C#):

Go:

go get github.com/tinyspline/[email protected]

Luarocks (Lua):

luarocks install --server=https://tinyspline.github.io/lua tinyspline

Maven (Java):


   org.tinyspline
   tinyspline
   0.6.0-1

PyPI (Python):

python -m pip install tinyspline

RubyGems (Ruby):

gem install tinyspline

Compiling From Source

See BUILD.md.

Getting Started

A variety of examples (tests) can be found in the test subdirectory.

The following listing shows a Python example:

…

Result:

Documentation

The latest Doxygen documentation can be found at: https://msteinbeck.github.io/tinyspline/

The documentation of the C interface (https://msteinbeck.github.io/tinyspline/tinyspline_8h.html) is quite extensive and also serves as an entry point for the C++ interface documentation (as well as the documentation for the bindings created from the C++ interface).

Publications

If you use TinySpline in your research, please cite it as below.

@INPROCEEDINGS{Steinbeck:SANER:21,
  author =       {Steinbeck, Marcel and Koschke, Rainer},
  booktitle =    {2021 IEEE International Conference on Software
                  Analysis, Evolution and Reengineering (SANER)},
  title =        {TinySpline: A Small, yet Powerful Library for
                  Interpolating, Transforming, and Querying NURBS,
                  B-Splines, and Bézier Curves},
  year =         {2021},
  pages =        {572-576},
  doi =          {10.1109/SANER50967.2021.00068}
}

Other publications:

@INPROCEEDINGS{Steinbeck:VISSOFT:22,
  author =       {Steinbeck, Marcel and Koschke, Rainer},
  booktitle =    {2022 Working Conference on Software Visualization
                  (VISSOFT)},
  title =        {Edge Animation in Software Visualization},
  year =         {2022},
  pages =        {63-74},
  doi =          {10.1109/VISSOFT55257.2022.00015}
}

Theoretical Backgrounds

[1] is a very good starting point for B-Splines.

[2] explains De Boor's Algorithm and gives some pseudo code.

[3] provides a good overview of NURBS with some mathematical background.

[4] is useful if you want to use NURBS in TinySpline.

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Cb-splinesbezier-curvesnurbssplines

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言