This project aims to implement Non-Uniform Rational B-Spline (NURBS) curve and surface computation algorithms in native Python with minimum possible dependencies. The library is fully object-oriented and does not depend on any external C/C++ libraries.
The package contains 3 modules:
BSplinecontains Non-Uniform B-Spline (NUBS) evaluation and storage functionalityNURBScontains Non-Uniform Rational B-Spline (NURBS) evaluation and storage functionalityCPGencontains simple control points grid generation algorithms
BSpline and NURBS modules contain 3 classes for geometric evaluation:
- Curve for evaluating 3D curves
- Curve2D for evaluating 2D curves
- Surface for evaluating surfaces
CPGen module contains 2 classes for grid generation:
- Grid for generating inputs for
BSpline.Surfaceclass - GridWeighted for generating inputs for
NURBS.Surfaceclass
I would be glad if you cite this repository using the DOI provided as a badge at the top.
Included setup.py script will take care of the installation and automatically copy the required files to site-packages directory. Please run the following from the command line:
python setup.py install
If you don't want to put the files into your Python distribution's site-packages directory for some reason, you can run
python setup.py develop
from the command line to generate a link to the package directory inside site-packages.
Please see NURBS-Python Examples repository for examples.
NURBS-Python is a high-level Python library following the object-oriented design principles. In its core, it implements the algorithms from The NURBS Book (2nd Edition) by Piegl & Tiller and combines these algorithms with other useful features. Please see the documentation for function reference and how to use the library: http://nurbs-python.rtfd.org
Please use the issue tracker for reporting bugs and other related issues.
If you have any questions or comments related to the NURBS-Python package, please don't hesitate to contact the developers by email.
- Onur Rauf Bingol (@orbingol)
I would like to thank all contributors for their help and support in testing, bug fixing and improvement of the NURBS-Python project.
- Luke Frisken (@kellpossible)
- John-Eric Dufour (@jedufour)
- Jan Heczko (@heczis)
NURBS-Python is licensed under The MIT License.
I would like to thank my PhD adviser, Dr. Adarsh Krishnamurthy, for his guidance and supervision throughout the course of this project.