readlib(bspline): with(plots): # # Construct basis functions of degree n in variable u for knot vector k. # Bfunction := proc(n, k, u) local i,j; seq( convert(bspline(n,u,[k[i]$i=j..j+n+1]), procedure), j=1..nops(k)-n-1); end: pairs := proc(x,y) local i; [x[i], y[i]] $ i=1..nops(x); end: # # Construct degree-n B-spline approximation to points x on knot vector k # over indeterminate t. # BsplineApprox := proc(n,x,k,u) local i,BS; BS := Bfunction(n,k,u); sum(x[i+n-1]*BS[i],i=1..nops(k)-n-1); end: