cleverblue 发表于 2008-11-20 22:44

三次样条和三次B样条画线比较例子

% spline 计算
%l= 20;
x = 0:10;
%x = rand(1,l);
y = sin(x);
xx = 0:.25:10;
yy = spline(x,y,xx);

% B-spline 计算
a(1,:) = x;
a(2,:) = y;
%plot(a(1,:),a(2,:),':');               % 绘制控制多边形;
plot(x,y,':',xx,yy)
hold on;                   % 默认为hold off,此命令用来保留控制多边形的图形;
len = size(a,2);   
k = 1;                                 
for i=1:len-3;          % 由于4个顶点可以确定一条B样条,共有8个控制顶点,可确定5条B样条曲线;
    for u=0:0.01:1    % 参数u;   
   
      b0=1.0./6.*(1-u).^3;                     % 基函数b0;
      b1=1.0./6.*(3.*u.^3-6.*u.^2+4);          % 基函数b1;
      b2=1.0./6.*(-3.*u.^3+3.*u.^2+3.*u+1);    % 基函数b2;
      b3=1.0./6.*u.^3;                         % 基函数b3;
   
      x=b0.*a(1,i)+b1.*a(1,i+1)+b2.*a(1,i+2)+b3.*a(1,i+3);   % 确定曲线的横坐标x;
      y=b0.*a(2,i)+b1.*a(2,i+1)+b2.*a(2,i+2)+b3.*a(2,i+3);   % 确定曲线的纵坐标y;
   
      line(x,y);       % 绘制曲线坐标点;
      m(1,k) = x;
      m(2,k) = y;
      k = k + 1;
    end
end
hold off;

宝宝和豆豆 发表于 2011-9-20 10:22

你好,我想深入的学习一下b样条曲线曲面,能给我指点一下吗,就是程序编写方面的,这方面的书我有,就是程序不太明白

宝宝和豆豆 发表于 2011-9-20 10:25

我的qq是513704494

人走茶不凉 发表于 2011-9-23 08:25

这样画的曲线是不通过控制点的{:{40}:}
页: [1]
查看完整版本: 三次样条和三次B样条画线比较例子