{"id":28159,"library":"rust-nurbs","title":"rust-nurbs","description":"A Python API for evaluation of Non-Uniform Rational B-Splines (NURBS) curves and surfaces, implemented in Rust for performance. Current version: 0.28.0. Released approximately every few months.","status":"active","version":"0.28.0","language":"python","source_language":"en","source_url":"https://github.com/Maple-Lang/rust-nurbs","tags":["nurbs","curves","surfaces","geometry","rust","high-performance"],"install":[{"cmd":"pip install rust-nurbs","lang":"bash","label":"PyPI"}],"dependencies":[],"imports":[{"wrong":"from rust_nurbs import NurbsCurve","symbol":"bernstein_poly","correct":"from rust_nurbs import bernstein_poly"},{"wrong":"from rust_nurbs import NurbsCurve","symbol":"bezier_curve_eval","correct":"from rust_nurbs import bezier_curve_eval"},{"wrong":"from rust_nurbs import NurbsCurve","symbol":"bezier_surf_d2sdu2","correct":"from rust_nurbs import bezier_surf_d2sdu2"}],"quickstart":{"code":"from rust_nurbs import NurbsCurve\nimport numpy as np\n\n# Define control points (4 points, 3D)\ncontrol_points = np.array([[0.0, 0.0, 0.0],\n                           [1.0, 2.0, 0.0],\n                           [3.0, 3.0, 0.0],\n                           [4.0, 0.0, 0.0]])\n\n# Create a degree 3 NURBS curve with uniform knot vector and weights\ncurve = NurbsCurve(control_points, degree=3)\n\n# Evaluate at parameter u=0.5\npoint = curve.evaluate(0.5)\nprint(point)","lang":"python","description":"Create a NURBS curve, evaluate at a parameter."},"warnings":[{"fix":"Ensure control_points etc. are created with dtype=np.float64 or cast via .astype(float).","message":"All input arrays (control_points, knots, weights) must be of type float (e.g., numpy float64). Integer arrays cause silent type coercion errors.","severity":"gotcha","affected_versions":"<=0.28.0"},{"fix":"Use np.linspace(0,1,100) for multiple evaluations.","message":"The evaluate method expects a single float or array-like of floats. Passing a Python list may work but using numpy array is recommended for performance.","severity":"gotcha","affected_versions":"<=0.28.0"},{"fix":"Check knot_vector[i+1] >= knot_vector[i]. Use np.sort if needed.","message":"Knot vector must be non-decreasing. If you supply a custom knot vector with duplicate knots at ends, ensure it is strictly non-decreasing. Errors are not descriptive.","severity":"gotcha","affected_versions":"<=0.28.0"}],"env_vars":null,"search_vec":"'0.28.0':28 'api':6 'approxim':30 'b':15 'b-spline':14 'current':26 'curv':18,35 'evalu':8 'everi':31 'geometri':37 'high':40 'high-perform':39 'implement':21 'month':33 'non':11 'non-uniform':10 'nurb':3,17,34 'perform':25,41 'python':5 'ration':13 'releas':29 'rust':2,23,38 'rust-nurb':1 'spline':16 'surfac':20,36 'uniform':12 'version':27","created_at":"2026-05-09T05:54:02.538457+00:00","updated_at":"2026-05-09T05:54:02.538457+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":null,"github":null,"docs":null,"changelog":null,"pypi":"https://pypi.org/project/rust-nurbs/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["ai-ml","data"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-08-02","install_tag":null}}