matlab 实现三次bezier曲线
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、Bezier曲线定义:
给定n+1个控制顶点Pi(i=0~n) ,则Bezier曲线定义为:
P(t)=∑Bi,n(t)Pi u∈[0,1]
其中:Bi,n(t)称为基函数。
Bi,n(t)=Ci nti (1-t)n-i
Ci n=n!/(i!*(n-i)!)
二、Bezier曲线性质
1、端点性质:
a)P(0)=P0, P(1)=Pn, 即:曲线过二端点。
b)P’(0)=n(P1-P0), P’(1)=n(Pn-Pn-1)
即:在二端点与控制多边形相切。
2、凸包性:Bezier曲线完成落在控制多边形的凸包内。
3、对称性:由Pi与Pn-i组成的曲线,位置一致,方向相反。
4、包络性:Pn (t)=(1-t)Pn-1 (t)+tPn-1 (t)
三次bezier曲线的matlab 实现
figure
file=uigetfile('.txt');
fin=fopen(file);
line2=fscanf(fin,'%f',[2,232]);
line2=line2';
plot(line2(:,1),line2(:,2),'r')
hold on
x(1)=line2(1,1);
y(1)=line2(1,2);
s(1,:)=line2(1,:);
for l=1:2:229
s(2:3,:)=line2(l:l+1,:);
s(4,:)=0.5*(line2(l+1,:)+line2(l+2,:));
for t=0:0.05:1
yt=1-t;
t1=yt^2;
t2=3*yt*t;
xt=s(1,1)*t1*yt+s(2,1)*t2*yt+s(3,1)*t2*t+s(4,1)*t^3; yt=s(1,2)*yt*t1+s(2,2)*t2*yt+s(3,2)*t2*t+s(4,2)*t^3; x(2)=xt;
y(2)=yt;
line(x,y)
x(1)=x(2);
y(1)=y(2);
end
s(1,:)=s(4,:);
end
title('三次bezier 曲线')