7.2.3 曲面与网格图命令
命令1 mesh
功能 生成由X,Y和Z指定的网线面,由C指定的颜的三维网格图。网格图是作为视点由view(3)设定的surface图形对象。曲面的颜与背景颜相同(当要动画显示不透明曲面时,这时可用命令hidden控制),或者当画一个标准的可透视的网线图时,曲面的颜就没有(命令shading控制渲染模式)。当前的图决定线的颜。
用法 mesh(X,Y,Z) 画出颜由c指定的三维网格图,所以和曲面的高度相匹配,
1.若X与Y均为向量,length(X)=n,length(Y)=m,而[m,n]=size(Z),空间中的点 (X(j),Y(I),Z(I,j)) 为所画曲面网线的交点,分别地,X对应于z的列,Y对应于z的行。
2.若X与Y均为矩阵,则空间中的点 (X(I,j),Y(I,j),Z(I,j))为所画曲面的网线的交点。
mesh(Z) 由[n,m] = size(Z)得,X =1:n与Y=1:m,其中z为定义在矩形划分区域上的单值函数。
mesh(…,C) 用由矩阵c指定的颜画网线网格图。Matlab对矩阵c中的数据进行线性处理,以便从当前图中获得有用的颜。
mesh(…,PropertyName’,PropertyValue, …) 对指定的属性PropertyName设置属性值Property
Value,可以在同一语句中对多个属性进行设置。
h = mesh(…) 返回surface图形对象句柄。
运算规则:
1.数据X,Y和z的范围,或者是对当前轴的XLimMode,YLimMode和ZLimMode属性的设置决定坐标轴的范围。命令aXis可对这些属性进行设置。
2.参量c的范围,或者是对当前轴的Clim和ClimMode属性的设置(可用命令caxis进行设置),决定颜的刻度化程度。刻度化颜值作为引用当前图的下标。
3.网格图显示命令生成由于把z的数据值用当前图表现出来的颜值。Matlab会自动用最大值与最小值计算颜的范围(可用命令caxis auto进行设置),最小值用图中的第一个颜表现,最大值用图中的最后一个颜表现。Matlab会对数据的中间值执行一个线性变换,使数据能在当前的范围内显示出来。
例7-31
>>[X,Y] = meshgrid(-3:.125:3);
>>Z = peaks(X,Y);
>>mesh(X,Y,Z);
图形结果为图7-31。
命令2 surf
功能 在矩形区域内显示三维带阴影曲面图。
用法 surf(Z) 生成一个由矩阵z确定的三维带阴影的曲面图,其中 [m,n] = size(Z),而X = 1:n,Y = 1:m。高度z为定义在一个几何矩形区域内的单值函数,z同时指定曲面高度数据的颜,所以颜对于曲面高度是恰当的。
surf(X,Y,Z) 数据z同时为曲面高度,也是颜数据。X和Y为定义X坐标轴和Y坐标轴的曲面数据。若X与Y均为向量,length(X)=n,length(Y)=m,而[m,n]=size(Z),在这种情况下,空间曲面上的节点为(X(I),Y(j),Z(I,j))。
surf(X,Y,Z,C) 用指定的颜c画出三维网格图。Matlab会自动对矩阵c中的数据进行线性变换,以获得当前图中可用的颜。
surf(…,’PropertyName’,PropertyValue) 对指定的属性PropertyName设置为属性值PropertyValue
h = surf(…) 返回一个surface图形对象句柄给变量h。
运算规则:
1.严格地讲,一个参数曲面是由两个独立的变量I、j来定义的,它们在一个矩形区域上连续变化。例如,a<=I<=b,c<=j<=d,三个变量X,Y,Z确定了曲面。曲面颜由第四参数矩阵C确定。
2.矩形定义域上的点有如下关系:
A(I-1,j)
|
B(I,j-1) ---- C(I,j) ---- D(I,j+1)
|
E(I+1,j)
这个矩形坐标方格对应于曲面上的有四条边的块,在空间的点的坐标为[X( ,Y( ,Z),每个矩形内部的点根据矩形的下标和相邻的四个点连接;曲面上的点只有相邻的三个点,曲面上四个角上的点只有两个相邻点,上面这些定义了一个四边形的网格图。
3.曲面颜可以有两种方法来指定:指定每个节点的颜或者是每一块的中心点颜。在这种一般的设置中,曲面不一定为变量X和Y的单值函数,进一步而言,有四边的曲面块不一定为平面的,而可以用极坐标,柱面坐标和球面坐标定义曲面。
4.命令shading设置阴影模式。若模式为interp,C必须与X,Y,Z同型;它指定了每个节点的颜,曲面块内的颜由附近几个点的颜用双线性函数计算出来的。若模式为facted(缺省模式)或flat,c(I,j)指定曲面块中的颜:
A(I,j)----------- B (I,j+1)
| C(I,j) |
C(I+1,j) --------- D(I+1,j)
在这种情形下,C可以与X,Y,和Z同型,且它的最后一行和最后一列将被忽略,换句话说,就是C的行数和列数可以比X,Y,Z少1。
5.命令surf将指定图形视角为view(3)。
6.数据X,Y,Z的范围或者通过对坐标轴的属性XlimMode,YlimMode和ZlimMode的当前设置(可以通过命令axis来设置),将决定坐标轴的标签。
7.参数C的范围或者通过对坐标轴的属性Clim和ClimMode的设置(可以通过命令caxis来设置),将决定颜刻度化。刻度化的颜值将作为引用当前图的下标。
例7-32
>>[X,Y,Z] = peaks(30);
>>surf(X,Y,Z)
>>colormap hsv
结果图形为图7-32。
命令3 surfc
功能 在矩形区域内显示三维带阴影曲面图,且在曲面下面画出等高线。
用法 surfc(Z)、surfc(X,Y,Z)、 surfc(X,Y,Z,C)、 
surfc(…,’PropertyName’,PropertyValue)、
surfc(…)、 h = surfc(…) 
上面各个使用形式的曲面效果与命令surf的相同,只不过是在曲面下面增加了曲面的等高线而已。
例7-33
>>[X,Y,Z] = peaks(30);
>>surfc(X,Y,Z)
>>colormap hsv
图形结果为图7-33。
命令4 surfl
功能 画带光照模式的三维曲面图。该命令显示一个带阴影的曲面,结合了周围的,散射的和镜面反射的光照模式。想获得较平滑的颜过度,要使用有线性强度变化的图(如:gray,copper,bone,pink等)。参数X,Y,Z确定的点定义了参数曲面的“里面”和“外面”,若用户想曲面的“里面”有光照模式,只要使用:
surfl(X’,Y’,Z’) 
用法 surfl(Z) 以向量z的元素生成一个三维的带阴影的曲面,其中阴影模式中的光源的方位、光照系数为缺省值(见下面)。
surfl(X,Y,Z) 以矩阵X,Y,Z生成的一个三维的带阴影的曲面,其中阴影模式中的光源的方位、光照系数为缺省值(见下面)。
surfl(…,’light’) 用一个matlab光照对象(light object)生成一个带颜、带光照的曲面,这与用缺省光照模式产生的效果不同。
surfl(…,’cdata’) 改变曲面颜数据(color data),使曲面成为可反光的曲面。
surfl(…,s) 指定光源与曲面之间的方位s,其中s为一个二维向量[azimuth,elevation],或者三维向量[sx,sy,sz]。缺省光源方位为从当前视角开始,逆时针45℉(度)。
surfl(X,Y,Z,s,k) 指定反射常系数k,其中k为一个定义环境光(ambient light)系数(0<=ka<=1)、漫反射(diffuse reflection)系数(0〈=kb〈=1〉、镜面反射(specular reflection)系数(0〈=ks〈=1〉与镜面反射亮度(以相素为单位)等的四维向量[ka,kd,ks,shine],缺省值为k=[0.55 0.6 0.4 10]。
h = surfl(…) 返回一个曲面图形句柄向量h。
例7-34
>>[X,Y] = meshgrid(-3:1/8:3);
>>Z = peaks(X,Y);
>>surfl(X,Y,Z);
>>shading interp
matlab等高线填充颜>>colormap(gray);
图形结果为图7-34。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。