📄 doboor.m
字号:
%正确的德布尔算法
function p=doboor(d,u,l,t,r,k,dim,n)
%for j=1:k+1
% for m=1:dim
% dt(m,j)=d(m,j);
% end
%end
for i=1:l-1
if u==1
j=n+1;
break
end
if u==0
j=k+1;
break
end
if u>=t(i)&u<t(i+1)
j=sum(r(1:i));
break
end
end
i=j;
%以上是判断u在哪个参数区间,从而判断算法中所涉及的控制点,已经把起始值为1考虑进去了。
dt=d;
%dt(1:dim,1:k+1)=d(1:dim,i-k:i);
%按照算法来
for ll=1:k
for j=i-k:i-ll
uu=knot(l,j+k+1,t,r);%所求节点的节点值
vv=knot(l,j+ll,t,r);
denom=uu-vv;
if abs(denom)<=1e-5
alfa=0;
else
alfa=(u-vv)/denom;
alfa;
end
dt(1:dim,j)=(1-alfa)*dt(1:dim,j)+alfa*dt(1:dim,j+1);
end
end
for m=1:dim
p(m)=dt(m,i-k);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -