/NURBS-Python

Object-oriented pure Python B-Spline and NURBS library

Primary LanguagePythonMIT LicenseMIT

NURBS-Python (geomdl)

DOI PYPI PYPIDL ANACONDA

RTD TRAVISCI APPVEYOR CIRCLECI CODECOV

Introduction

NURBS-Python (geomdl) is a pure Python, self-contained, object-oriented B-Spline and NURBS spline library for Python versions 2.7.x, 3.4.x and later.

The following article outlines the design and features of NURBS-Python (geomdl). I would be glad if you would cite it if you have used NURBS-Python (geomdl) in your research:

@article{bingol2019geomdl,
  title={{NURBS-Python}: An open-source object-oriented {NURBS} modeling framework in {Python}},
  author={Bingol, Onur Rauf and Krishnamurthy, Adarsh},
  journal={{SoftwareX}},
  volume={9},
  pages={85--94},
  year={2019},
  publisher={Elsevier},
  doi={https://doi.org/10.1016/j.softx.2018.12.005}
}

Features

NURBS-Python (geomdl) provides convenient data structures and highly customizable API for rational and non-rational splines along with the efficient and extensible implementations of the following algorithms:

  • Spline evaluation
  • Derivative evaluation
  • Knot insertion
  • Knot removal
  • Knot vector refinement
  • Degree elevation
  • Degree reduction
  • Curve and surface fitting via interpolation and least squares approximation

NURBS-Python (geomdl) also provides customizable visualization and animation options via Matplotlib, Plotly and VTK libraries. Please refer to the documentation for more details.

Installation

The easiest way to install NURBS-Python (geomdl) is using pip:

$ pip install --user geomdl

It is also possible to install NURBS-Python (geomdl) using conda:

$ conda install -c orbingol geomdl

Please refer to the Installation and Testing section of the documentation for alternative installation methods.

Examples and Documentation

Extra Modules

Author

Acknowledgments

Please see CONTRIBUTORS.rst file for the acknowledgements.

License

NURBS-Python (geomdl) is licensed under the terms of MIT License and it contains the following modules:

  • six is licensed under the terms of MIT License
  • backports.functools_lru_cache is licensed under the terms of MIT License