You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

44 lines
633 B

function [N] = NURBS_1D(xi, i, p,n, Xi,w)
N = zeros(size(w));
for j = 1:n
N(j) = deBoor(xi,j,p,Xi);
end
R = N(i)*w(i)/sum(N.*w);
N= R;
return
function [N] = deBoor(xi, i, p, Xi)
if p==0
if xi==Xi(i) && xi==Xi(i+1)
N = 0;
elseif xi>=Xi(i) && xi<=Xi(i+1)
N = 1;
else
N = 0;
end
else
if Xi(i) ==Xi(i+p)
f = 0;
else
f = (xi - Xi(i))/(Xi(i+p)-Xi(i));
end
if Xi(i+1) == Xi(i+p+1)
g = 0;
else
g = (Xi(i+p+1)-xi)/(Xi(i+p+1)-Xi(i+1));
end
N = f*deBoor(xi,i,p-1,Xi) + g*deBoor(xi,i+1,p-1,Xi);
end
return