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.
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 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.
MIT License - see the LICENSE file in the source distribution.
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
See BUILD.md.
A variety of examples (tests) can be found in the test subdirectory.
The following listing shows a Python example:
…
Result:
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).
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}
}
[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.
No open issues yet, or sync has not completed.