deboor.m

来自「de Boor 求值算法求作二次和三次B-样条曲线非插值」· M 代码 · 共 27 行

M
27
字号
function x1=deBoor(n,k,x,u)
%deBoor算法
%n d0…dn个控制点
%k k次B样条曲线
%x 控制点各坐标轴的数值数组
%
DT=zeros(n,k+1);
syms t ALPHA DT;
for i=1:n
    DT(i,1)=x(i);
end
for j=2:k+1
    for i=j:n
        ALPHA=(t-u(i))/(u(i+k+2-j)-u(i));
        DT(i,j)=(1- ALPHA)*DT(i-1,j-1)+ ALPHA*DT(i,j-1);
    end 
end
%
j=1;
for i=k+1:n
    x0=subs(DT(i,k+1),t,u(i):0.001:u(i+1));
    len=length(x0);
    for p=1:len
        x1(j)=x0(p);
        j=j+1;
    end    
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?