可运行的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
运行结果