丁嘉程

摘 要:本文總結了MATLAB在三維曲面的繪制中的一些實例。在規則三維曲面的繪制上,給出了莫比烏斯帶的繪制。在不規則曲面繪制上,給出了離散點繪制光滑曲面的實例,通過設計飛機座椅靠背曲線的問題給出了在現實生活中三維圖像繪制的應用。
關鍵詞:MATLAB語言;三維曲面;圖像處理
MATLAB中規則曲面繪制可使用surf和mesh命令,如莫比烏斯帶繪制代碼:k=50;u=0:pi/k:2*pi;v=-1:0.2:1;n1=length(u);n2=length(v);for i=1:n1 for j=1:n2 z(i,j)=v(j)*sin(u(i)/2)/2;y(i,j)=(1+v(j)*cos(u(i)/2)/2)*sin(u(i));x(i,j)=(1+v(j)*cos(u(i)/2)/2)*cos(u(i));end;end;surf(x,y,z);
不規則曲面繪制本質上是依據一組離散的數據點來構造光滑的曲面。現給出15個離散點,要求利用散亂點插值函數griddata擬合得一光滑曲面。代碼如下:x=[6 11.3 23 -3 12 11.5 19 16.3 21 1 5.4 12 -4 3 18];y=[1 1.1 0.9 2.8 5 -3 -4 5 6 -6.3 5.9 7 5.2 6 9.9];z=[-0.4 0.5 2 2.6 0 0.3 0.4 0.6 1 1.16 0.79 0 0.5 0 0.18];[X,Y]=meshgrid(-4:0.5:22,-11:0.5:10);Z=griddata(x,y,z,X,Y);mesh(X,Y,Z);hold on;plot3(x,y,z,′*′);
不規則曲面繪制優化如下:scatter3(x,y,z);x=x′;y=y′;z=z′;hold on;Z=[ones(length (x),1),x,y,x.^2,x.*y,y.^2,x.^3,x.^2.*y,x.*y.^2,y.^3];A=Z\\z;X=min(x)-1:0.2:max(x)+1;Y=min(y)-1:(max(y)-min(y)+2)/(length(X)+1):max(y)+1;[x,y]=meshgrid(X,Y);z=A(1)+A(2)*x+A(3)*y+A(4)*x.^2+A(5)*x.*y+A(6)*y.^2+A(7)*x.^3+A(8)*x.^2.*y+A(9)*x.*y.^2+A(10)*y.^3;mesh(x,y,z);
還可以利用MATLAB將較為龐雜的點集轉化為圖形。2015年第四屆“認證杯”數模A題第一問:如何設計座椅靠背曲線,能使座位更舒適?可根據人體脊柱圖提取脊柱邊界點集[X,Y],并另存為ZZ與XX.背面板繪制代碼如下:x=1:1:500;[X,Y]=meshgrid(x);y=YY;r=ones(size(y));x=r′*XX*550/435;z=r′*ZZ*550/435;mesh(x,y,z);xlabel(′x-axis′),ylabel(′y-axis′),zlabel(′z-axis′);title(′mesh′);
估算座椅靠背長550mm,由工作座椅一般人類工效學要求,腰靠長推薦值330mm,腰靠圓弧半徑R推薦值550mm,對曲面進行優化。優化代碼如下:x=1:1:435;y=1:1:435;[X,Y]=meshgrid(x);R=550;y0=330/2;m=sqrt(R^2-y0^2);x1=XX*550/434;x0=x1-m;theta=(-asin(165/550)):0.001404:asin(165/550);for i=1:435 x2=R*cos(theta)+x0 (i);y2=R*sin(theta)+y0;x(i,:)=x2′;y(i,:)=y2′;r=ones(size(x1));z(:,i)=ZZ*550/434;end;mesh(x,y,z);xlabel(′x-axis′),ylabel(′y-axis′),zlabel(′z-axis′);title(′mesh′)。
參考文獻:
[1]霍振香,王福昌,張麗娟.在《高等數學》教學中使用MATLAB制作曲面和動畫的幾個實例[J].教育教學論壇,2013,(32):175-176.
[2]李步升.MATLAB在三維圖形構造中的應用[J].電腦開發與應用,2009,(9):28-29,32.endprint