声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1834|回复: 3

[计算数学] 三次样条和三次B样条画线比较例子

[复制链接]
发表于 2008-11-20 22:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
% 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 | 显示全部楼层
这样画的曲线是不通过控制点的
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-19 16:14 , Processed in 0.074735 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表