MATLAB---CAD绘制Bezier曲线算法

286 篇文章 32 订阅
236 篇文章 15 订阅

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

function MyDeCasAlg()
%本程序是一个执行Bezier曲线的递推算法
CtrlPs = PickCtrlPs();%交互式选取点作为曲线的控制顶点
i=1;%初始化计数器的值
for u=0:0.02:1%按照步长依次取密化参数值
    AllCtrlPs = DeCasteljauAlg(CtrlPs,u);
    
    N = length(AllCtrlPs);
    DensePs(1,i) = AllCtrlPs{N}(1);
    DensePs(2,i) = AllCtrlPs{N}(2);
    %最后一个细胞中的点就是曲线上对应于参数u的点,最为密化点保存
    if(i==30)
        AllCtrlPs0 = AllCtrlPs;%保存i=30时的递推点便于后面绘图
        %说明一个特定参数下的递推过程
    end
    i=i+1;
end
hold on
plot(DensePs(1,:),DensePs(2,:))%采用密化点绘制Bezier曲线
N = length(AllCtrlPs0)-1;
%对于i=30对应的参数u绘制各级递推点
%奇数层级和偶数层级采用不同颜色表示以便图形的直观
for i=1:N
    if(mod(i,2)==1)
        plot(AllCtrlPs0{i}(1,:),AllCtrlPs0{i}(2,:),'r','linewidth',1)
    else
        plot(AllCtrlPs0{i}(1,:),AllCtrlPs0{i}(2,:),'g','linewidth',1)
    end
end
%
i=N+1;
plot(AllCtrlPs0{i}(1,:),AllCtrlPs0{i}(2,:),'k.','MarkerSize',12)%夸张显示最后一个递推点
hold off
box on %显示坐标轴包围盒
>> Bezier
>> Bezie2
>> MyDeCasAlg
这几个程序的运行需要交互选取控制顶点点击左键选点,点击右键在选点的同时结束选点过程。 Bezie2构造两条Bezier曲线
所以执行两次选点过程。MyDeCasAlg执行时不绘制顶点,所在在选择两个点后才会看到线段。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值