你好,欢迎访问远方教程PC版!
广告位招租
网站首页 >> 统计之窗 >> MATLAB专区 >> 文章内容

Matlab技巧24:MATLAB绘制B样条曲线详解(第3页)

[日期:2016-11-12]   来源:远方教程  作者:远方教程   阅读:12942次[字体: ] 访问[旧版]
 捐赠远方教程 

3 B样条曲线的绘制

  根据B样条曲线的定义公式,曲线上任一点坐标值是参数变量u的函数,用矩阵形式表示

MATLAB绘制B样条曲线详解-远方教程

只需要确定控制顶点 di曲线的次数 k 以及基函数 Ni,k(u),就完全确定了曲线。

代码4:B样条曲线的绘制函数:

  1. % DrawSpline.m文件
  2. function DrawSpline(n, k, P, NodeVector)
  3. % B样条的绘图函数
  4. % 已知n+1个控制顶点P(i), k次B样条,P是2*(n+1)矩阵存控制顶点坐标, 节点向量NodeVector
  5.  
  6. plot(P(1, 1:n+1), P(2, 1:n+1),...
  7.                       'o','LineWidth',1,...
  8.                       'MarkerEdgeColor','k',...
  9.                       'MarkerFaceColor','g',...
  10.                       'MarkerSize',6);
  11. line(P(1, 1:n+1), P(2, 1:n+1));
  12. Nik = zeros(n+1, 1);
  13. for u = 0 : 0.005 : 1-0.005
  14.     for i = 0 : 1 : n
  15.         Nik(i+1, 1) = BaseFunction(i, k , u, NodeVector);
  16.     end
  17.     p_u = P * Nik;
  18.     if u == 0
  19.         tempx = p_u(1,1);
  20.         tempy = p_u(2,1);
  21.         line([tempx p_u(1,1)], [tempy p_u(2,1)],...
  22.         'Marker','.','LineStyle','-', 'Color',[.3 .6 .9], 'LineWidth',3);
  23.     else
  24.         line([tempx p_u(1,1)], [tempy p_u(2,1)],...
  25.         'Marker','.','LineStyle','-', 'Color',[.3 .6 .9], 'LineWidth',3);
  26.         tempx = p_u(1,1);
  27.         tempy = p_u(2,1);
  28.     end
  29. end

说明:调用 DrawSpline(n, k, P, NodeVector)  函数就能绘制曲线,注意输入变量要正确。

第1页 第2页 第3页
图片展示
 
相关评论
站长推荐