react-three-nurbs
Version:
A React component library for NURBS (Non-Uniform Rational B-Spline) curves, surfaces, and solids in Three.js. Built with React Three Fiber, zero external NURBS dependencies — all math implemented from scratch. Boolean operations powered by OpenCASCADE WAS
37 lines (36 loc) • 1.46 kB
TypeScript
/**
* B-spline basis function algorithms.
* Implements Algorithms A2.1, A2.2, A2.3 from "The NURBS Book" (Piegl & Tiller).
*/
/**
* Find the knot span index (Algorithm A2.1).
* Returns i such that knots[i] <= u < knots[i+1], with special handling for the upper boundary.
*
* @param n - Number of control points minus 1 (= controlPoints.length - 1)
* @param degree - Polynomial degree
* @param u - Parameter value
* @param knots - Knot vector
*/
export declare function findSpan(n: number, degree: number, u: number, knots: number[]): number;
/**
* Compute non-vanishing basis functions (Algorithm A2.2).
* Returns an array N of length (degree+1) where N[j] = N_{span-degree+j, degree}(u).
*
* @param span - Knot span index (from findSpan)
* @param u - Parameter value
* @param degree - Polynomial degree
* @param knots - Knot vector
*/
export declare function basisFunctions(span: number, u: number, degree: number, knots: number[]): number[];
/**
* Compute basis function derivatives (Algorithm A2.3).
* Returns a 2D array ders[k][j] where ders[k][j] is the kth derivative
* of the jth non-vanishing basis function at u.
*
* @param span - Knot span index
* @param u - Parameter value
* @param degree - Polynomial degree
* @param n - Maximum derivative order to compute
* @param knots - Knot vector
*/
export declare function derivBasisFunctions(span: number, u: number, degree: number, n: number, knots: number[]): number[][];