首页 > 学院 > 开发设计 > 正文

利用MATLAB绘制Bezier曲线

2019-11-08 01:41:20
字体:
来源:转载
供稿:网友

暂时放弃了用opengl绘图。因为数据结构略复杂,暂时投奔了MATLAB的怀抱,下面利用MATLAB改写绘制Bezier曲线的代码

直接上代码,首先是直接利用基函数的绘制

function bezier( vertices )%BEZIER 绘制Bezier曲线Dim=size(vertices,1);%二位或者三维空间NumPoint=size(vertices,2)-1;%点的个数t=0:0.001:1;x=[];y=[];z=[];if Dim==2     x=(1-t).^(NumPoint)*vertices(1,1);     y=(1-t).^(NumPoint)*vertices(2,1);  for j=1:NumPoint      w=factorial(NumPoint)/(factorial(j)*factorial(NumPoint-j))*(1-t).^(NumPoint-j).*t.^(j);      x=x+w*vertices(1,j+1);y=y+w*vertices(2,j+1);  endplot(vertices(1,:),vertices(2,:),'b');hold on;grid on;axis tight;  xlabel('X');ylabel('Y');plot(x,y,'r');endif Dim==3    x=(1-t).^(NumPoint)*vertices(1,1);    y=(1-t).^(NumPoint)*vertices(2,1);    z=(1-t).^(NumPoint)*vertices(3,1); for j=1:NumPoint     w=factorial(NumPoint)/(factorial(j)*factorial(NumPoint-j))*(1-t).^(NumPoint-j).*t.^(j);     x=x+w*vertices(1,j+1);y=y+w*vertices(2,j+1);z=z+w*vertices(3,j+1); endplot3(vertices(1,:),vertices(2,:),vertices(3,:),'b');hold on;grid on;axis tight;  %axis([0.5,1.5,0.5,1.5,0,0.7]);xlabel('X');ylabel('Y');zlabel('Z');plot3(x,y,z,'r');view(3);endend

不得不佩服MATLAB的强大。。下面展示两个例子

vertices=[0.8 0.8 0;1.4 0.6 0;1.5 0.7 0.5;1.5 1.5 .5;0.6 1.4 0;1.5 1.5 0]';bezier( vertices )

再去掉代码中关于坐标轴的注释,效果如下

如果是二维的,点换做

vertices = [0 3; 3 7;7 2; 9 6;13 3]';结果为


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表