當我們學習surface命令時,已經看到了三維作圖的一些端倪。在matlab中我么可以調用mesh(x,y,z)函數來產生三維圖像。
首先,我們用z=cos(x)sin(y)在-2pi ≤x,y≤ 2pi內的圖像來看看:
[x,y] = meshgrid(-2*pi:0.1:2*pi);
z = cos(x).*sin(y);
mesh(x,y,z),xlabel('x'),ylabel('y'),zlabel('z')
顯示圖像如下:
同樣用mesh命令產生z = ye-(x2+y2)的三維圖像:
[x,y] = meshgrid(-2:0.1:2);
z = y.*exp(-x.^2-y.^2);
mesh(x,y,z),xlabel('x'),ylabel('y'),zlabel('z')
下面繪制表面帶有漸變顏色的圖像,可以通過 surf 和 surfc 命令實現,只要簡單更改上面例子中的命令為:
surf(x,y,z),xlabel('x'),ylabel('y'),zlabel('z')
則圖像如下所示,圖像表面的顏色與高度是相稱的:
若使用surfc則會在圖像中留下映像:
surfc(x,y,z),xlabel('x'),ylabel('y'),zlabel('z')
還可以調用surfl(命令中的'l'表示這是一個光照表面 lighted surface)命令顯示三維光照物體的表面,可以使用這個命令產生沒有線條的三維圖像,圖像還可以是彩色的或灰度的。例如仍然產生函數z = ye-(x2+y2)的灰度圖像,圖像中的陰影可設置為flat、interp、faceted:
surfl(x,y,z),xlabel('x'),ylabel('y'),zlabel('z')
shading interp;
colormap(gray);
下面我們使用matlab內置函數來產生像球形或圓柱形這樣的基本圖像,例如:
t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(1+sin(t));
surf(X,Y,Z),colormap('default');
axis square
會得到如下圖像:
試試另一個稍微有點不同的函數,陰影設置為faceted:
t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(1+cos(t));
surf(X,Y,Z),shading faceted;
axis square
若將陰影設置為shading flat,則圖像顯示為: