matlab编写Bézier曲线

 可运行的Bézier曲线matlab程序,附详细解释

%%Bézier曲线
%n阶Bézier曲线
%参数:控制点、比例参数

clc
clear
close all

p = [10,5;25,10;30,20;25,30;15,35;5,25]; %控制点,p0、p1、……、pN
n = length(p)-1; %阶数,控制点个数-1
x = p(:,1); %控制点x轴坐标
y = p(:,2); %控制点y轴坐标

figure %绘制Bézier曲线图
plot(x,y,'-r')
grid on
axis equal
axis tight
title('Bézier曲线图')
xlabel('X')
ylabel('Y')
hold on

Bt_x1 = (0); %某比例参数、控制点,x轴Bézier多项式单项式值,初始化
Bt_y1 = (0); %某比例参数、控制点,y轴Bézier多项式单项式值,初始化
Bt_x = (0); %某比例参数,x轴Bézier多项式值表,初始化
Bt_y = (0); %某比例参数,y轴Bézier多项式值表,初始化

t = 0.01; %比例间隔
for q = 0:t:1 %比例参数
    for i = 0:n %控制点个数
           Bt_x1(i+1) = factorial(n)/factorial(i)/factorial(n-i)*(1-q)^(n-i)*q^i*p(i+1,1); %当前比例参数、控制点,x轴Bézier多项式单项式值
           Bt_y1(i+1) = factorial(n)/factorial(i)/factorial(n-i)*(1-q)^(n-i)*q^i*p(i+1,2); %当前比例参数、控制点,y轴Bézier多项式单项式值
    end
    m = round(q/t+1); %当前比例参数,Bézier多项式值个数
    Bt_x(m,1) = sum(Bt_x1); %当前比例参数,x轴Bézier多项式值,即x轴Bézier多项式单项式值总和,记录在x轴Bézier多项式值表中
    Bt_y(m,1) = sum(Bt_y1); %当前比例参数,y轴Bézier多项式值,即y轴Bézier多项式单项式值总和,记录在y轴Bézier多项式值表中
    plot(Bt_x(:,1),Bt_y(:,1),'og')
    hold on
end
plot(Bt_x(:,1),Bt_y(:,1),'-b')
hold on

运行结果

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值