Motivation
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
Support for common geometric algorithms: tessellation, voxelization, ray intersection, etc.
Construct surfaces and volumes, extract isosurfaces via
construct
moduleCustomizable visualization and animation options with Matplotlib, Plotly and VTK modules
Import geometry data from common CAD formats, such as 3DM and SAT.
Export geometry data into common CAD formats, such as 3DM, STL, OBJ and VTK
Support importing/exporting in JSON, YAML and libconfig formats
Jinja2 support for file imports
Pure Python, no external C/C++ or FORTRAN library dependencies
Python compatibility: 2.7.x, 3.4.x and later
For higher performance, optional Compile with Cython options are also available
Easy to install via pip
NURBS-Python (geomdl) contains the following fundamental geometric algorithms:
Point evaluation
Derivative evaluation
Knot insertion
Knot removal
Knot vector refinement
Degree elevation
Degree reduction
References
Leslie Piegl and Wayne Tiller. The NURBS Book. Springer Science & Business Media, 2012.
David F. Rogers. An Introduction to NURBS: With Historical Perspective. Academic Press, 2001.
Elaine Cohen et al. Geometric Modeling with Splines: An Introduction. CRC Press, 2001.
Mark de Berg et al. Computational Geometry: Algorithms and Applications. Springer-Verlag TELOS, 2008.
John F. Hughes et al. Computer Graphics: Principles and Practice. Pearson Education, 2014.
Fletcher Dunn and Ian Parberry. 3D Math Primer for Graphics and Game Development. CRC Press, 2015.
Erwin Kreyszig. Advanced Engineering Mathematics. John Wiley & Sons, 2010.
Erich Gamma et al. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.