NURBS-Python (geomdl) is a self-contained, object-oriented pure Python B-Spline and NURBS library with implementations of curve, surface and volume generation and evaluation algorithms. It also provides convenient and easy-to-use data structures for storing curve, surface and volume descriptions.
Some significant features of NURBS-Python (geomdl):
- Self-contained, object-oriented, extensible and highly customizable API
- Convenient data structures for storing curve, surface and volume descriptions
- Surface and curve fitting with interpolation and least squares approximation
- Knot vector and surface grid generators
- Customizable visualization and animation options with Matplotlib, Plotly and VTK modules
- Exporting curve, surface and volume data into various file formats, such as JSON, YAML, Libconfig, STL, OBJ and VTK
- Support for common algorithms: tessellation, voxelization, ray intersection, etc.
- Shapes component for generation common surfaces and curves
- Pure Python, no external C/C++ or FORTRAN library dependencies
- Python compatibility: 2.7.x, 3.4.x and later
- No compilation steps are necessary, everything is implemented in pure Python
- For higher performance, optional Compile with Cython options are also available
- Easy to install via pip:
pip install geomdlor conda:
conda install -c orbingol geomdl
- Docker images are available
NURBS-Python (geomdl) contains the following fundamental geometric algorithms:
- Point evaluation
- Derivative evaluation
- Knot insertion
- Knot removal
- Knot vector refinement
- Degree elevation
- Degree reduction
- Piegl, Les, and Wayne Tiller. The NURBS book. Springer Science & Business Media, 2012.
- Berg, Mark de, et al. Computational Geometry: Algorithms and Applications. Springer-Verlag TELOS, 2008.
- Hughes, John F., et al. Computer Graphics: Principles and Practice. Pearson Education, 2014.
- Dunn, Fletcher, and Ian Parberry. 3D Math Primer for Graphics and Game Development. CRC Press, 2015.
- Kreyszig, Erwin. Advanced Engineering Mathematics. John Wiley & Sons, 2010.
- Gamma, Erich. Design Patterns: Elements of Reusable Object-Oriented Software. Pearson Education India, 1995.