标签:
学习公社 |
给定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 曲线')
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
for t=0:0.05:1
end
title('三次bezier 曲线')
局部放大
前一篇:“金土工程”简介
后一篇:autoCAD 常用命令