matlab 实现三次bezier曲线

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 曲线')

相关文档
最新文档