利用MATLAB的曲线拟合工具箱,可以绘制多种样条曲线和曲面。注意:使用本小节的方法,需要首先安装曲线拟合工具箱。
样条曲线
在命令窗口键入下面的代码,可以创建一条B样条曲线。
code.matlab
points=[0 0 1 1 0 -1 -1 0 0 ;0 0 0 1 2 1 ];
plot(points(1,:),points(2,:),':')
values=spcrv(points,3);
hold on, plot(values(1,:),values(2,:)), hold off
生成图3-21。
\[\]
图3-21 B样条曲线
样条曲面
利用MATLAB样条工具箱,可以绘制样条曲面,包括三次样条曲面、B样条曲面和有理样条曲面等。使用样条工具箱,必须安装该工具箱。下面分别演示几种样条曲面,其中用到了样条工具箱的部分函数。
在命令窗口键入下面的命令行,生成一个三次样条曲面。
code.matlab
x =.0001+[-4:.2:4]; y=-3:.2:3;
[yy,xx]=meshgrid(y,x); r=pi*sqrt(xx.^2+yy.^2); z=sin(r)./r;
bcs=csapi( {x,y}, z ); fnplt( bcs ), axis([-5 5 -5 5 -.5 1])
结果如图3-22所示。
\[\]
图3-22 三次样条曲面
键入下面的命令行,生成B样条曲面。
code.matlab
x=-2:.5:2;
y=-1:.25:1;
[xx, yy]=ndgrid(x,y);
z=exp(- (xx.^2+yy.^2));
sp=spapi({3,4},{x,y},z);
fnplt(sp)
结果如图3-23所示。
\[\]
图3-23 B样条曲面
下面的命令行生成一个有理样条曲面,改变rsmak函数的cylinder参数,可以生成锥面、柱面和球面等多种曲面。
code.matlab
fnplt(fncmb(rsmak('cylinder',1,2),[0 0 -1;0 1 0;1 0 0]))
axis equal, axis off, shading interp
生成图3-24,这是一个柱面,进行了插值着色。
\[\]
图3-24 有理样条曲面