| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9687 人关注过本帖, 2 人收藏
标题:第7章 绘图与图形处理
只看楼主 加入收藏
wangyou6699
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-6-1
收藏
得分:0 
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设置属性值PropertyValue,可以在同一语句中对多个属性进行设置。
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
>>colormap(gray);
图形结果为图7-34。

2007-01-03 14:54
wangyou6699
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-6-1
收藏
得分:0 
命令5 waterfall
功能 瀑布图
用法 waterfall(X,Y,Z) 用所给参数X、Y与Z的数据画一“瀑布”效果图。若X与Y都是向量,则X与Z的列相对应,Y与Z的行相对应,即length(X)=Z的列数,length(Y)=Z的行数。参数X与Y定义了x-轴与y-轴,Z定义了z-轴的高度,Z同时确定了颜色,所以颜色能恰当地反映曲面的高度。若想研究数据的列,可以输入:waterfall(Z’)或waterfall(X’,Y’,Z’)
waterfall(Z) 画出一瀑布图,其中缺省地有:X=1:Z的行数,Y=1:Z的行数,且Z同时确定颜色,所以颜色能恰当地反映曲面高度。
waterfall(…,C) 用比例化的颜色值从当前色图中获得颜色,参量C决定颜色的比例,为此,必须与Z同型。系统使用一线性变换,从当前色图中获得颜色。
h = waterfall(…) 返回patch图形对象的句柄h,可用于画出图形。
例7-35
>>[X,Y,Z] = peaks(30);
>>waterfall(X,Y,Z)
图形结果为图7-35。
命令6 cylinder
功能 生成圆柱图形。该命令生成一单位圆柱体的x-,y-,z-轴的坐标值。用户可以用命令surf或命令mesh画出圆柱形对象,或者用没有输出参量的形式而立即画出图形。
用法 [X,Y,Z] = cylinder 返回一半径为1、高度为1的圆柱体的x-,y-,z-轴的坐标值,圆柱体的圆周有20个距离相同的点。
[X,Y,Z] = cylinder® 返回一半径为r、高度为1的圆柱体的x-,y-,z-轴的坐标值,圆柱体的圆周有20个距离相同的点。
[X,Y,Z] = cylinder(r,n) 返回一半径为r、高度为1的圆柱体的x-,y-,z-轴的坐标值,圆柱体的圆周有指定的n个距离相同的点。
cylinder(…) 没有任何的输出参量,直接画出圆柱体。
例7-36
>>t = 0:pi/10:2*pi;
>>[X,Y,Z] = cylinder(2+(cos(t)).^2);
>>surf(X,Y,Z); axis square
图形结果为图7-36。
命令7 sphere
功能 生成球体
用法 sphere 生成三维直角坐标系中的单位球体。该单位球体由20*20个面。
sphere(n) 在当前坐标系中画出有n*n个面的球体
[X,Y,Z] = sphere(n) 返回三个阶数为(n+1)*(n+1)的,直角坐标系中的坐标矩阵。该命令没有画图,只是返回矩阵。用户可以用命令surf(X,Y,Z)或mesh(X,Y,Z)画出球体。
例7-37
>>[X,Y,Z]=sphere;
>>mesh(X,Y,Z)
>>hidden off
图形结果为图7-37。
7.2.4 三维数据的其他表现形式命令
命令1 pcolor
功能 伪彩色图。该图为一矩形单元的、由参数c定义了颜色的阵列,系统通过c中的每相邻的四点定义的曲面补片而生成一伪彩色图。是从上面向下观看的“平面”曲面图。若用户使用命令shading faceted或shading flat,则每一单元的固定颜色是与之相连的角的颜色有关的。所以,C(i,j)定义了单元的地i行与地j列的颜色。C中的最后一行与最后一列都没有用上。若用户使用命令shading interp,则每一单元的颜色是对它的四个顶点的颜色进行一双线性插值后的颜色,这时c的所有元素都参加了运算。
用法 pcolor(C) 画一伪彩色图。C中的元素都线性地映射于当前色图下标。从C映射到当前的色图是由命令colormap和caxis定义的。
pcolor(X,Y,C) 在参数x和y指定的位置上画一由C确定的为彩色图。该图为一逻辑上为矩形、带二维格栅的、顶点在[X(i,j),Y(i,j)]的图形(若X和Y为矩阵时)。参量X与Y为指定格栅线的向量或矩阵。若X与Y为向量,则X对应于C的列,而y对应于C的行;若X与Y同为矩阵,则必须为同型矩阵。该命令等价于命令:surf(X,Y,0,C),观察角度为:view([0,90])。
h = pcolor(…) 返回一surface图形对象句柄于h
例7-38
>>pcolor(magic(20))
>>colormap(gray(2))
>>axis ij;axis square
图形结果为图7-38。
命令2 quiver
功能 矢量图或速度图
用法 quiver(U,V) 在范围为x =1:n和y =1:m的坐标系中显示由U和V定义的向量,而[m,n]=size(U)=size(V),这种形式是在一个几何矩形中画出U和V的,quiver命令本身会自动地画出这些向量,使之不会重叠。
quiver(X,Y,U,V) 由向量X和Y中的分量的任意组合而成的向量与。若X与Y都是向量length(X)=n,而length(Y)=m,而[m,n]=size(U)=size(V),向量X对应于矩阵U、V的列向量,而向量Y对应于矩阵U、V的行向量。
quiver(…,scale) 自动对向量的长度进行处理。使之不会重叠,当然可以对scale进行取值,若scale=2,则向量长度伸长2倍,若scale=0,则如实画出向量图。
quiver(…,LineSpec) 可以指定画矢量图用的线型,符号,颜色,quiver命令会在原来的向量图上画出记号。
quiver(…,LineSpec,'filled') 对用LineSpec指定的记号进行填充
h = quiver(…) 返回每个向量图的句柄
例7-39
>>[z,x,y]=peaks(30);
>>[Dx,Dy]=gradient(z,0.1,0.1);
>>quiver(x,y,Dx,Dy)
图形结果为图7-39。
命令3 slice
功能 立体切片图。该命令显示通过立体图形的矩形切片图。
用法 slice(X,Y,Z,V,sx,sy,sz) 显示三元函数V=V(X,Y,Z)确定的超立体形在x-轴、y-轴与z-轴方向上的若干点(对应若干平面。即若函数V=V(X,Y,Z)中有一变量如X取一定值X0,则函数V=V(X0,Y,Z)变成一立体曲面(只不过是将该曲面通过颜色表示高度V,从而显示于一平面而已。)的切片图,各点的坐标由参量向量sx、sy与sz指定。参量X、参量Y与参量Z为三维数组,用于指定立方体V的坐标。参量X、Y与Z必须有单调的、正交的间隔(如同用命令meshgrid生成的一样)。在每一点上的颜色由对超立体 V的三维内插值确定。
slice(V,sx,sy,sz) 显示三元函数V=V(X,Y,Z)确定的超立体形在x-轴、y-轴与z-轴方向上的若干点(对应若干平面)的切片图,各点的坐标由数量向量sx、sy与sz指定。其中V为三维数组(阶数为m*n*p),缺省地有:X = 1:m、Y = 1:n、Z = 1:p。
slice(V,XI,YI,ZI) 显示参量矩阵XI、YI与ZI确定的、超立体图形的切面图。参量XI、YI与ZI定义了一曲面,同时会在曲面的点上计算超立体V的值。参量XI、YI与ZI必须为同型矩阵。
slice(X,Y,Z,V,XI,YI,ZI) 沿着由矩阵XI、YI与ZI定义的曲面画穿过超立体图形V的切片。
slice(…,'method') 指定内插值的方法。‘method’为如下方法之一:‘linear’、
‘cubic’、‘nearest’:
‘linear’——指定使用三次线性内插值法(该状态为缺省的);
‘cubic’—— 指定使用三次立方内插值法;
‘nearest’——指定使用最近点内插值法。
h = slice(…) 返回一曲面图形对象的句柄向量h。
命令4 axis
功能 坐标轴的刻度与外在显示
用法 axis([xmin xmax ymin ymax]) 设置当前坐标轴的x-轴与y-轴的范围。
axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 设置当前坐标轴的x-轴、y-轴与z-轴的范围,当前颜色刻度范围。该命令也同时设置当前坐标轴的属性 Xlim、Ylim与Zlim为所给参数列表中的最大值和最小值。另外,坐标轴属性XlimMode、YlimMode与ZlimMode设置为‘manual’。
v = axis 返回一包含x-轴、y-轴与z-轴的刻度因子的行向量,其中v为一四维或六维向量,这取决于当前坐标为二维还是三维的。返回的值包含当前坐标轴的XLim、Ylim与Zlim属性值。
axis auto 设置系统到它的缺省动作——自动计算当前轴的范围,这取决于输入参量x,y与z的数据中的最大值与最小值。同时将当前坐标轴的属性XlimMode、YlimMode与ZlimMode设置为‘auto’用户可以指定对某一坐标轴进行自动操作。例如:
axis ’auto x’ 将自动计算x-轴的范围;
axis ’auto yz’ 将自动计算y-轴与z-轴的范围。
axis manual 、axis(axis) 把坐标固定在当前的范围,这样,若保持状态(hold)为on,后面的图形仍用相同界限。该命令设置了属性XLimMode、属性YLimMode与属性ZlimMode为manual。
axis tight 把坐标轴的范围定为数据的范围,即坐标轴中没有多余的部分。
axis fill 该命令用于将坐标轴的取值范围分别设置为绘图所用数据在相应方向上的最大、最小值。
axis ij 使用矩阵坐标系:坐标原点在左上角、横坐标(j-轴)的值从左到右增加,纵坐标(i-轴)的值从上到下增加。
axis xy使用笛卡儿坐标系(缺省):坐标原点在左下角、横坐标(x-轴)的值从左到右增加,纵坐标(y-轴)的值从下到上增加。
axis equal 设置坐标轴的纵横比,使在每个方向的数据单位都相同。其中x-轴、y-轴与z-轴将根据所给数据在各个方向的数据单位自动调整其纵横比。
axis image 效果与命令axis equal相同,只是图形区域刚好紧紧包围图象数据。
axis square 设置当前图形为正方形(或立方体形),系统将调整x-轴、y-轴与z-轴,使它们有相同的长度,同时相应地自动调整数据单位之间的增加量。
axis normal 自动调整坐标轴的纵横比,还有用于填充图形区域的、显示于坐标轴上的数据单位的纵横比。
表7-7显示由上面三个命令设置的坐标轴属性。
表7-7
命令
坐标轴属性 axis equal axis normal axis square axis tightequal
DataAspectRatioMode [1 1 1] 没有设置 没有设置 [1 1 1]
PlotBoxAspectRatio manual auto auto Manual
PlotBoxAspectRatioMode [3 4 4] 没有设置 [1 1 1] Auto
Stretch-to-fill 禁止 可行 禁止 禁止
axis vis3d 该命令将冻结坐标系此时的状态,以便进行旋转。
axis off 关闭所用坐标轴上的标记、格栅和单位标记。但保留由text和gtext设置的对象。
axis on 显示坐标轴上的标记、单位和格栅。
[mode,visibility,direction] = axis('state') 返回表明当前坐标轴的设置属性的三个字符串,见表7-8。
表7-8
输出参量 返回字符串 说明
Mode ‘’auto’或
’manual’ 若XLimMode、YlimMode与ZlimMode都设置为auto,则mode为auto;若XLimMode、YlimMode或者ZlimMode都设置为manual,则mode为manual
Visibility ‘’on’或’off’
Direction ‘’xy’或’ij’
例7-40
>>x = 0:.025:pi/2;
>>plot(x,exp(x).*sin(2*x),'-m<')
>>axis([0 pi/2 0 5])
图形结果为图7-40。

2007-01-03 14:54
wangyou6699
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-6-1
收藏
得分:0 

命令5 hidden
功能 在一网格图中显示隐含线条。隐含线条的显示,实际上是显示那些从观察角度观看没有被其他物体遮住的线条。
用法 hidden on 对当前图形打开隐含线条的显示状态,使网格图后面的线条被前面的线条遮住。设置曲面图形对象的属性FaceColor为坐标轴背景颜色。这是系统的缺省操作。
hidden off 对当前图形关闭隐含线条的显示
hidden 在两种状态on与off之间切换
例7-41
>>mesh(peaks)
>>hidden off
图形结果为图7-41。
命令6 shading
功能 设置颜色色调属性。该命令控制曲面与补片等的图形对象的颜色色调。同时设置当前坐标轴中的所有曲面与补片图形对象的属性EdgeColor与FaceColor。命令shading设置恰当的属性值,这取决于曲面或补片对象是表现网格图或实曲面。
用法 shading flat 使网格图上的每一线段与每一小面有一相同颜色,该颜色由线段的末端的端点颜色确定;或由小面的、有小型的下标或索引的四个角的颜色确定。
shading faceted 带重叠的黑色网格线的平面色调模式。这是缺省的色调模式。
shading interp 在每一线段与曲面上显示不同的颜色,该颜色为通过在每一线段两边的、或者为不同小曲面之间的色图的索引或真颜色进行内插值得到的颜色。
例7-42
>>sphere(16)
>>axis square
>>shading flat
>>title('Flat Shading')
图形结果为图7-42。
命令7 caxis
功能 颜色坐标轴刻度。命令caxis控制着对应色图的数据值的映射图。它影响下面对象之一的、用带索引的颜色数据(CData)与颜色数据映射(CDataMapping)控制的刻度的图形对象surface、patches与images;它没有影响带用颜色数据(CData)或颜色数据映射(CDataMapping)直接设置的颜色的图形对象surface、images或patches。该命令还改变坐标轴图形对象的属性Clim与ClimMode。
用法 caxis([cmin cmax]) 用指定的最大值与最小值设置颜色范围。数据值中小于cmin或大于cmax的,将分别地映射于cmin与cmax;处于cmin与cmax之间的数据将线性地映射于当前色图。
caxis auto 让系统自动地计算数据的最大值与最小值对应的颜色范围。这是系统的缺省动作。数据中的正无穷大(Inf)对应于最大颜色值;负无穷大(-Inf)对应于最小颜色值;带颜色值设置为NaN的面或者边界将不显示。
caxis manual、caxis(caxis) 冻结当前颜色坐标轴的刻度范围。这样,当hold设置为on时,可使后面的图形命令使用相同的颜色范围。
v = caxis 返回一包含当前正在使用的颜色范围的二维向量v=[cmin cmax]。
caxis(axes_handle,…) 使由参量axis_handle指定的坐标轴,而非当前坐标轴。
颜色坐标轴刻度工作原理:
使用带索引的颜色数据(Cdata)与颜色数据映射(CdataMapping)的图形对象surface、patch与image将设置成刻度化的,在每次图形渲染时,将映射颜色数据值为当前图形的颜色。当颜色数据值等于或小于cmin时,将它映射为当前色图中的第一个颜色;当颜色数据值等于或大于cmax时,将它映射为当前色图中的最后一个颜色;对于处于cmin与cmax之间的颜色数据(例如c),系统将执行下列线性转换,以获得对应当前色图(它的长度为m)中的颜色的索引(当前色图的行指标index):
index = fix((C-min)/(cmax-cmin)*m)+1
例7-43
>>[X,Y,Z] = sphere;
>>C = Z;surf(X,Y,Z,C)
>>caxis([-1 3])
图形结果为图7-43。
命令8 view
功能 指定立体图形的观察点。观察者(观察点)的位置决定了坐标轴的方向。用户可以用方位角(azimuth)和仰角(elevation)一起,或者用空间中的一点来确定观察点的位置。
用法 view(az,el)、view([az,el]) 给三维空间图形设置观察点的方位角。方位角az与仰角el为这两个旋转角度:做一通过视点与z-轴的平面,与xy平面有一交线,该交线与y-轴的反方向的、按逆时针方向(从z-轴的方向观察)计算的、单位为度的夹角,就是观察点的方位角az。若角度为负值,则按顺时针方向计算;在通过视点与z-轴的平面上,用一直线连接视点与坐标原点,该直线与xy平面的夹角就是观察点的仰角el。若仰角为负值,则观察点转移到曲面下面。
view([x,y,z]) 在笛卡儿坐标系中于点(x,y,z)设置视点。注意:输入参量只能是方括号的向量形式,而非数学中的点的形式。
view(2) 设置缺省的二维形式视点。其中az=0,el=90,即从z-轴上方观看。
view(3) 设置缺省的三维形式视点。其中az=-37.5,el=30。
view(T) 根据转换矩阵T设置视点。其中T为4*4阶的矩阵,如同用命令viewmtx生成的透视转换矩阵一样。
[az,el] = view 返回当前的方位角az与仰角el。
T = view 返回当前的4*4阶的转换矩阵T。
例7-44
>>peaks;
>>az = 0;el = 90;
>>view(az, el)
图形结果为图7-44。
命令9 viewmtx
功能 视点转换矩阵。计算一个4*4阶的正交的或透视的转换矩阵,该矩阵将一四维的、齐次的向量转换到一个二维的视平面上(如计算机平面上)。
用法 T = viewmtx(az,el) 返回一与视点的方位角az与仰角el(单位都为度)对应的正交矩阵,并没有改变当前视点。
T = viewmtx(az,el,phi) 返回一透视的转换矩阵,其中参量phi是单位为度的透视角度,为标准化立方体(单位为度)的对像视角角度与透视扭曲程度。
表7-9
Phi的值 说明
0度 正交投影
10度 类似以远距离投影
25度 类似以普通投影
60度 类似以广角投影
用户可以通过使用返回的矩阵,用命令view(T)改变视点的位置。该4*4阶的矩阵将变换四维的、同次的向量成形式为(x,y,z,w)的非标准化的向量,其中w不等于1。正交化的x-元素与y-元素组成的向量(x/w,y/w,z/w,1)为我们所需的二维向量。(注:一四维同次向量为在对应的三维向量后面增加一个1。例如:[x,y,z,1]为对应于三维空间中的点[x,y,z]的四维向量。)
T = viewmtx(az,el,phi,xc) 返回以在标准化的图形立方体中的点xc为目标点的透视矩阵(就像相机正对着点xc一样),目标点xc为视角的中心点。用户可以用一三维向量xc=[xc,yc,zc]指定该中心点,每一分量都在区间[0,1]上。缺省值为xc=[0 0 0]。
命令10 surfnorm
功能 计算与显示三维曲面的法线。该命令计算用户命令surf中的曲面法线。
用法 surfnorm(Z)、surfnorm(X,Y,Z) 画出一曲面与它的法线图。其中矩阵Z用于指定曲面的高度值;X与Y为向量或矩阵,用于定义曲面的x与y部分。
[Nx,Ny,Nz] = surform(…) 返回组成曲面的法线在三个坐标轴上的投影分量Nx,Ny与Nz。
例7-45
>>[x,y,z] = cylinder(1:10);
>>surfnorm(y,x,z)
>>axis([-12 12 -12 12 -0.1 1])
图形结果为图7-45。

图7-45 曲面法线图
7.3 通用图形函数命令
7.3.1 图形对象句柄命令
命令1 figure
功能 创建一个新的图形对象。图形对象为在屏幕上单独的窗口,在窗口中可以输出图形。
用法 figure 用缺省的属性值创建一个新的图形对象。
figure('PropertyName',PropertyValue,…) 对指定的属性PropertyName用指定的属性值PropertyValue(属性名与属性值成对出现)创建一个新的图形窗口,对于那些没有指定的属性,则用缺省值。属性名与有效的属性值见下表。
figure(h) 1. 若h为一个已经存在的图形的句柄,则figure(h)使由h标记的图形成为当前图形,使它可见,且在屏幕上把它显示到所有图形之前。当前图形为图像输出的地方。
2. 若h不是已经存在图形的句柄,但是为一整数,则该命令生成一图形窗口,同时把该窗口的句柄赋值为h;若h不是一图形窗口的句柄,也不是一整数,则返回一错误信息。
h = figure(…) 返回图形窗口对象的句柄给h。
表7-10
属性名 属性说明 有效属性值
窗口位置
Position 图形窗口的位置与大小 有效值:四维向量[left,bottom,
width,height]
缺省值:决定于显示
Units 用于解释属性Position的单位 有效值:inches(英寸)
centimeters(厘米)
normalized(标准化单位,认为窗口为一长宽都是1)
points(点)
pixels(像素)
characters(字符)
缺省值:pixels
指定类型与外在显示
Color 窗口的背景颜色 有效值:ColorSpec(有效的颜色 参数)
缺省值:取决于颜色表(参见命令colordef)
Menubar 转换图形窗口菜单条的“开”与“关” 有效值:none、figure
缺省值:figure
Name 显示图形窗口的标题 有效值:任意字符串
缺省值:‘’(空字符串)
NumberTitle 标题栏中是否显示’Figure No. n’,其中n为图形窗口的编号 有效值:on、off
缺省值:on
Resize 指定图形窗口是否可以通过鼠标改变大小 有效值:on、off
缺省值:on
SelectionHighlight 当图形窗口被选中时,是否突出显示 有效值:on、off
缺省值:on
Visible 确定图形窗口是否可见 有效值:on、off
缺省值:on
WindowStyle 指定窗口为标准窗口还是典型窗口 有效值:normal(标准窗口)、
modal(典型窗口)
缺省值:normal
控制色图
Colormap 图形窗口的色图 有效值:m*3阶的RGB颜色矩阵
缺省值:jet色图
Dithermap 用于真颜色数据以伪颜色显示的色图 有效值:m*3阶的RGB颜色矩阵
缺省值:有所有颜色的色图
DithermapMode 是否使用系统生成的抖动色图 有效值:auto、manual
缺省值:manual
FixedColors 不是从色图中获得的颜色 有效值:m*3阶的RGB颜色矩阵
缺省值:无(只读模式)
MinColormap 系统颜色表中能使用的最少颜色数 有效值:任一标量
缺省值:64
ShareColors 允许MATLAB共享系统颜色表中的颜色 有效值:on、off
缺省值:on
指定透明度
Alphamap 图形窗口的α色图,用于设定透明度。 有效值:m*1维向量,每一分量在[0 1]之间
缺省值:64*1维向量
指定渲染模式
BackingStore 打开或关闭屏幕像素缓冲区 有效值:on、off
缺省值:on
DoubleBuffer 对于简单的动画渲染是否使用快速缓冲 有效值:on、off
缺省值:off
Renderer 用于屏幕和图片的渲染模式 有效值:painters、zbuffer、OpenGL
缺省值:系统自动选择
关于图形窗口的一般信息
Children 显示于图形窗口中的任意对象句柄 有效值:句柄向量

FileName 命令guide使用的文件名 有效值:字符串
Parent 图形窗口的父对象:根屏幕 有效值:总是0(即根屏幕)
Selected 是否显示窗口的“选中”状态 有效值:on、off
缺省值:on
Tag 用户指定的图形窗口标签 有效值:任意字符串
缺省值:' '(空字符串)
Type 图形对象的类型(只读类型) 有效值:'figure'
UserData 用户指定的数据 有效值:任一矩阵
缺省值:[](空矩阵)
RendererMode 缺省的或用户指定的渲染程序 有效值:auto、manual
缺省值:auto
关于当前状态的信息
CurrentAxes 在图形窗口中的当前坐标轴的句柄 有效值:坐标轴句柄
CurrentCharacter 在图形窗口中最后一个输入的字符 有效值:单个字符
CurrentOject 图形窗口中的当前对象的句柄 有效值:图形对象句柄
CurrentPoint 图形窗口中最后单击的按钮的位置 有效值:二维向量[x-coord,
y-coord]
SelectionType 鼠标选取类型 有效值:normal、extended、alt、open
回调程序的执行
BusyAction 指定如何处理中断调用程序 有效值:cancel、queue
缺省值:queue
ButtonDownFcn 当在窗口中空闲点按下鼠标按钮时,执行的回调程序 有效值:字符串
缺省值:' '(空字符串)
CloseRequestFcn 当执行命令关闭时,定义一回调程序 有效值:字符串
缺省值:closereq
CreateFcn 当打开一图形窗口时,定义一回调程序 有效值:字符串
缺省值:' '(空字符串)
DeleteFcn 当删除一图形窗口时,定义一回调程序 有效值:字符串
缺省值:' '(空字符串)
Interruptible 定义一回调程序是否可中断 有效值:on、off
缺省值:on(可以中断)
KeyPressFcn 当在图形窗口中按下一键时,定义一回调程序 有效值:字符串
缺省值:' '(空字符串)
ResizeFcn 当图形窗口改变大小时,定义一回调程序 有效值:字符串
缺省值:' '(空字符串)
UIContextMenu 定义与图形窗口相关的菜单 有效值:属性UIContrextmenu的句柄
WindowButtonDownFcn 当在图形窗口中按下鼠标时,定义一回调程序 有效值:字符串
缺省值:' '(空字符串)
WindowButtonMotionFcn 当将鼠标移进图形窗口中时,定义一回调程序 有效值:字符串
缺省值:' '(空字符串)
WindowButtonUpFcn 当在图形窗口中松开按钮时,定义一回调程序 有效值:字符串
缺省值:' '(空字符串)
访问对象的控制
IntegerHandle 指定使用整数或非整数图形句柄 有效值:on、off
缺省值:on(整数句柄)
HandleVisiblity 指定图形窗口句柄是否可见 有效值:on、callback、off
缺省值:on
HitTest 定义图形窗口是否能变成当前对象(参见图形窗口属性CurrentObject) 有效值:on、off
缺省值:on
NextPlot 在图形窗口中定义如何显示另外的图形 有效值:replacechildren、add、replace
缺省值:add
定义鼠标指针
Pointer 选取鼠标记号 有效值:crosshair、arrow、topr、watch、topl、botl、botr、circle、cross、fleur、left、right、top、fullcrosshair、bottom 、ibeam、custom
缺省值:arrow
PointerShapeCData 定义鼠标外形的数据 有效值:16*16阶矩阵
缺省值:将鼠标设置为'custom'且可见
PointerShapeHotSpot 设置鼠标活跃的点 有效值:二维向量[row,column]
缺省值:[1 1]
例7-46
>>scrsz = get(0,'ScreenSize');
>>figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])
执行上面的语句,会在屏幕的左上角生成一没有任何符号的窗口。
命令2 line
功能 生成线(line)对象。命令line在当前坐标轴中生成一个线对象。用户可以指定线的颜色,宽度,类型和标记符号等其他特性。
命令line 有两种形式:
1.自动循环使用颜色和类型。当用户用非正式语法来指定矩阵坐标数据:line(X,Y,Z),Matlab将循环使用由坐标轴ColorOrder和LineStyle指定的颜色顺序和类型顺序。
2.纯粹低级操作。当用户用属性名和属性值调用命令line:
line(‘XData’,x,’YData’,y,’ZData’,z)
Matlab将在当前用缺省的颜色(参见命令colordef的使用)画出线对象。注意一点的是,用户不能在命令line的低级形式中使用矩阵数据。
用法 line(X,Y) 在当前的坐标轴中画出由向量x和y定义的线条。若x与y为同型的矩阵,则对于x,y的每一列画出一线条。
line(X,Y,Z) 在三维空间中画出由x,y,z定义的线条。
line(X,Y,Z,'PropertyName',PropertyValue,…) 画出由参数x,y,z确定的线条,其中对指定属性PropertyName设置为PropertyValue,其他没有指定属性用缺省值。属性LineStyle和Marker参见命令plot。
line('PropertyName',PropertyValue,…) 对属性用相应的输入参数来设置而画出线条。这是命令line的低级使用形式,此时不接受矩阵参数。除了该情形,其他形式都接受矩阵参数。
h = line(…) 返回每一条线的线对象对应的句柄向量。
表7-11
属性名 说明 有效属性值
定义对象的数据
Xdata 定义线条的x-轴坐标参量 有效值:向量或矩阵
缺省值:[0 1]
Ydata 定义线条的y-轴坐标参量 有效值:向量或矩阵
缺省值:[0 1]
Zdata 定义线条的z-轴坐标参量 有效值:向量或矩阵
缺省值:[0 1]
定义线型与数据点标记符
LineStyle 定义线条的类型 有效值:-、--、:、、-.、 none
缺省值:-(实线)
LineWidth 定义线条的宽度(以磅为单位) 有效值:一标量
缺省值:0.5磅
Marker 定义标记数据点的标记符号 有效值:13种类型之一
缺省值:none
MarkerEdgeColor 定义标记颜色或可填充标记的边界颜色 有效值: auto、none、 ColorSpec
缺省值:auto
MarkerFaceColor 定义封闭形标记的填充颜色
MarkerSize 定义标记大小 有效值:标量(磅)
缺省值:6(磅)
控制线条的显示
Clipping 坐标轴矩形区域是否可剪辑 有效值:on、off
缺省值:on
EraseMode 定义显示与擦除线条的方法(对于动画显示) 有效值:normal、none、
    xor、background
缺省值:normal
SelectionHighlight 当线条被选中时,是否突出显示 有效值:on、off
缺省值:on
Visible 定义线条是否可见 有效值:on、off
缺省值:on
Color 定义线条颜色 有效值:ColorSpec
对象访问的控制
HandleVisibility 定义线条句柄对其他函数是否可见 有效值:on、off、callback
缺省值:on
HitTest 定义线条能否成为当前对象 有效值:on、off
缺省值:on
关于线条的一般信息
Children 线条没有子对象 有效值:[](空矩阵)
Parent 线条对象的父对象为坐标轴对象 有效值:坐标轴句柄
Selected 是否显示线条的“选中”状态 有效值:on、off
缺省值:on
Tag 用户定义的标签 有效值:任一字符串
缺省值:’’(空字符串)
Type 图形对象的类型(只读类型) 有效值:'line'
UserData 用户定义的数据 有效值:任一矩阵
缺省值:[](空矩阵)
与回调程序执行有关的属性
BusyAction 定义如何处理回调中断程序 有效值:cancel、queue
缺省值:queue
ButtonDownFcn 当在线条上按下鼠标时,定义一回调程序 有效值:字符串
缺省值:' '(空字符串)
CreateFcn 当生成线条时,定义一回调程序 有效值:字符串
缺省值:' '(空字符串)
DeleteFcn 当删除线条时,定义一回调程序 有效值:字符串
缺省值:' '(空字符串)
Interruptible 定义回调程序是否可中断 有效值:on、off
缺省值:on(可中断)
UIContextMenu 定义与线条相关的菜单 有效值:UIContextMenu的句柄
例7-47
>>t = 0:pi/20:2*pi;
>>hline1 = plot(t,exp(t).*sin(t),'k');
>>hline2 = line(t+.06,exp(t).*sin(t),'LineWidth',4,'Color',[.8 .8 .8]);
>>set(gca,'Children',[hline1 hline2])
生成图形为图7-46。

图7-46 命令line画的函数图
例7-48
生成随机直线图:
>>line(rand(4,2),rand(4,2),rand(4,1))
>>line(rand(1,4),rand(1,4),rand(1,4))
>>line(rand(4,1),rand(4,1),rand(4,1))
>>line(rand(2,4),rand(2,4),rand(1,4))
>>line(rand(4,2),rand(4,2),rand(4,1))
生成图形为图7-47。


2007-01-03 14:54
wangyou6699
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-6-1
收藏
得分:0 
命令3 patch
功能 生成补片图形对象。该命令为生成补片图形对象的低级图形函数。补片为一个或多个多边形,多边形的顶点为坐标中的点。用户可以指定补片的颜色与光照模式。
用法 patch(X,Y,C) 在当前坐标轴中增加二维带填充模式的补片。参量X,Y确定顶点的位置。若X,Y为矩阵(同型或不同型),系统按列生成多个多边形。若x,y没有定义一封闭的多边形,则命令自动地将多边形封闭。参量x与y可以定义凹的或自身交叉的多边形。可是,一个不可分隔的补片的边界自身交叉,则不能完整填充。在这种情况下,最好是将多边形分解成几个小的、自身没有交叉的多边形。参量c指定每一补片的颜色,它可以为简单的ColorSpec,每面一颜色或每一顶点一颜色。若c为三维列向量,它将被认为是一直接指定的RGB颜色。
patch(X,Y,Z,C) 生成三维的补片对象。
patch(FV) 用结构FV生成一补片。结构FV包含这些域名vertices,faces和可选的facevertecdata,这些域名对应于补片的Vertices属性、Faces属性、FaceVertexCData属性。
patch(…,C,'PropertyName',PropertyValue…) 在二维(X,Y)或三维(X,Y,Z)空间中对补片指定的属性PropertyName设置为PropertyValue。
patch('PropertyName',PropertyValue…) 对所有指定的多个属性PropertyName设置为相应的值PropertyValue。该命令形式可以使用户免除颜色的指定,因为系统将使用缺省的面颜色和边界颜色,除非用户准确地对属性FaceColor与EdgeColor进行设置。该命令形式也允许用户通过对属性Faces与Vertices的设置来代替x-,y-与z-轴的输入。
handle = patch(…) 返回命令patch生成的补片对象句柄。
说明 函数patch不象其他的高级的区域生成函数,例如函数fill或area,它没有检测图形窗口与坐标轴的属性NextPlot的设置情形。它只是简单地在当前坐标轴中添加补片对象而已。
有两种指定颜色的补片属性名:
(1)Cdata——当指定x-,y-与z-轴坐标(XData,YData,ZData)时使用;
(2)FaceVertexCData——当指定多边形的顶点与连接矩阵时使用。
以上两个属性接受颜色数据作为索引颜色或者是真颜色(RGB)。其中索引颜色数据 能代表当前色图的直接索引或者代表映射到整个色图的线性数据的比例数值。
命令4 surface
功能 生成面对象。该命令是生成面图形对象的低级函数。面对象为由矩阵元素的A(I,j)所在的行下标I为x-坐标,所在的列下标j为y-坐标,元素值为z-坐标确定的点生成的空间多边形。
用法 surface(Z) 画出由矩阵z确定的曲面,其中z为定义在一几何矩形区域上的单值函数。
surface(Z,C) 画出颜色由c指定的、面由z指定的空间曲面。
surface(X,Y,Z) 曲面由参数x,y,z确定,颜色参数c=z,因此颜色能恰当地反映曲面的高度。
surface(X,Y,Z,C) 曲面由参数x,y,z确定,颜色由参数c确定。
Surface(x,y,Z) 参数x与y为向量,若[m,n]=size(z),则要求length(x)=n,length(y)=m,面上的点由(x(j),y(i),z(I,j))确定。
Surface(x,y,Z,C) 曲面确定如上情形,颜色由参数c确定。
surface(…'PropertyName',PropertyValue,…) 对指定的曲面属性PropertyName指定为PropertyValue,对曲面进行细微控制。
h = surface(…) 返回生成面对象的句柄。
命令5 image
功能 显示图片对象。该命令通过对矩阵c中每一个元素(每一元素作为引用图形色图下标或直接给出RGB值)的解释而生成一个图片对象。Image命令有两种使用格式:
1.一个调用命令newplot的高级函数,可以确定在何处放置图片与坐标轴的范围为刚好围住图片;使刚生成的图片放置在坐标轴的刻度线与格栅线之上;属性Ydir设置为rervse;属性View为[0 90]。
2.一个增加图片到当前坐标轴的低级命令,而没有调用命令newplot,在低级使用形式中,只能对指定属性进行设置操作。
用户在命令的输入参量中可以输入属性名/属性值,结构数组,细胞数组等。
用法 image(C) 把C作为一图片进行显示。C中的每一个元素指定了一个“图片”矩形中的相应部分的颜色。
image(x,y,C) 在(x,y)确定的位置上画C的元素。其中x,y都为2维矩阵,分别指定x轴与y轴的范围,其效果与image(C)相同,只不过是进行了恰当的比例缩放。
image(x,y,C,'PropertyName',PropertyValue,…) 该形式为指定属性名/属性值的高级使用形式,在执行该命令之前,先执行命令newplot。
image('PropertyName',PropertyValue,…) 该形式为低级使用形式,它只接受属性名/属性值的输入。
handle = image(…) 返回刚生成的图片对象的句柄。用户可以从上面的任何形式的调用后获得图片句柄。
例7-49
>>load clown
>>image(X,'CDataMapping','scaled')
>>colormap(map)
图形结果为图7-48。
命令6 uicontrol
功能 生成用户控制图形对象(用户界面控制)。也通过该命令运行图形用户界面。当对象被选中时,一般会执行相应的操作。系统支持多种控件,每一种都有不同的作用:
 校验框——当单击检验框时,会执行一操作。该组件对于提供用户多个独立的选择是很有用的。要激活一校验框,只需用鼠标单击该组件即可,且选中的状态在组件上显示出来。
 可编辑文本框——允许用户输入与修改文本文字的区域。当用户想把文字作为 输入时,可使用该组件。若一可编辑文本框有焦点,则单击文本框的菜单栏不会执行任何操作。因此,在单击菜单条后,语句get(edit_handle,’String’)并没有返回当前编辑框中的内容。因为系统必须执行回调函数来改变属性 string的值,即使屏幕上显示的文字已经改变。
 框架——该组件为一封闭的、可见的、图形窗口区域。框架能使一用户图形界面中相关的控制组件能容易理解。框架没有相关的回调程序。只有控制组件能在框架中显示。框架不是透明的,因此用户定义的组件先后顺序决定了组件是否被框架遮住或可见。属性Stacking order决定了控制组件的显示顺序:第一个定义的组件最先显示,后面定义的控制组件则覆盖已经存在的组件。若用户要用一框架包围一些组件,则必须第一个定义框架。
 列表框——显示一些项目的列表(用命令string设置),且允许用户选择一个或多个项目。属性Min与Max控制着选择的模式。属性Value显示可选择的项目与包含着字符串列表中项目的索引;对于选择了多个项目则用向量表示。在任何的能改变属性Value值的、鼠标松开的操作之后,系统MATLAB将马上执行列表框的回调函数。因此,用户有必要增加一“Done”按钮,用于推迟当要多次选择项目时的操作。在执行列表框回调函数Callback属性之前,列表框中项目的选择有单击或双击之分,对应于将图形窗口属性SelectionType设置为normal或open。
 弹出菜单——当组件被按下时,打开且显示一选择列表(用命令string设置)。当没有打开时,该组件显示当前的选择项。该组件对于用户想给其他用户提供一系列的互斥的选择项,又不想占用太多的区域。
 普通按钮——当该组件被按下时,将执行一操作。要激活一按钮,只需在按钮上按下鼠标按钮。
 单选按钮——该组件与校验框相类似,但它包含几个互斥的、而且相关的选项(例如在任意时刻,只能选择一个状态)。要激活某一单选按钮,只需在该组件上按下鼠标即可。被选中的组件同时显示出来。
 滑块——该组件允许用户通过移动某一范围之内的滑块来输入一指定的数值。用户要移动一滑块,只需在滑块上按下鼠标不放,且在滑块方向上移动;或者是在滑槽内单击鼠标;或者是单击滑块条上的箭头。当松开鼠标后,滑块所在位置将与一数值对应。用户可以设置滑块的最大值、最小值与当前值等。
 静态文本框——显示文本行。静态文本经常作为其他控制对象标签,以提供其他用户相关信息,或者是显示一滑块的数值。其他用户不能交互地改变静态文本,因此对于静态文本,没有相关的回调函数。
 触发按钮——当该组件被单击且显示出它们的状态(on或者off)时,控制是否执行回调函数。
用法 handle = uicontrol(parent) 在父对象parent上生成一用户图形控制界面。用户界面控制对象都是图形窗口的子对象,所以当窗口中没有坐标轴时,同样可以放置控制组件于图形窗口中。
handle = uicontrol(…,'PropertyName',PropertyValue,…) 参量PropertyName为属性名,参量PropertyValue可为结构数组或者为单元数组,同时随意地返回刚生成的对象的句柄。当然用户可以通过命令set与get来设置与询问生成对象的属性值。
附:表7-12列出所有的用于命令uicontrol对象的属性名。每一属性名当作一描述该属性的链接。
表7-12
属性名 属性名含义 属性值
控制控件类型与显示
BackgroundColor 对象的背景颜色 有效值:ColorSpec
缺省值:与系统有关
Cdata 显示于对象之上的真颜色图片 有效值:矩阵
ForegroundColor 文本字体的颜色 有效值:ColorSpec
缺省值:[0 0 0](黑色)
SelectionHighlight 当对象被选中时突出显示 有效值:on、off
缺省值:on
String 用户控制界面的标签,也是列表框与弹出菜单中的项目 有效值:任意有效的字符串
Visible 用户界面控制是否可见 有效值:on、off
缺省值:on
关于控件对象的一般信息
Children 用户界面控制界面没有子对象
Enable 用户界面控制是否可用 有效值:on、inactive、off
缺省值:on
Parent 用户界面控制对象的父对象 有效值:图形窗口标量句柄
Selected 对象是否为选中状态 有效值:on、off
缺省值:off
SliderStep 滑块步长尺度 有效值:二维向量
缺省值:[0.001 0.1]
Style 用户界面控制对象的类型 有效值:pushbutton、edit、togglebutton、slider、text、radiobutton、popupmenu 、listbox、frame
缺省值:pushbutton
Tag 由用户指定的对象的标记符 有效值:任意有效字符串
TooltipString 对象的工具提示 有效值:任意有效字符串
Type 图形对象的类型 有效值:字符串(只读)
缺省值:uicontrol
UserData 用户指定的数据 有效值:矩阵
控制控件对象的位置
Position 用户界面控制对象的大小与位置 有效值:位置矩形
缺省值:[20 20 60 20]
Units 解释属性position向量的单位 有效值:pixels、inches、character、normalized、points、centimeters
缺省值:pixels
控制字体与标签
FontAngle 字符的倾斜度 有效值:normal、italic、oblique
缺省值:normal
FontName 字体系列名称 有效值:字符串
缺省值:与系统有关
FontSize 字体大小 有效值:一标量
缺省值:与系统有关
FontUnits 字体大小单位 有效值:pixels、normalized 、inches、centimeters、points
缺省值:points
FontWeight 文本字体的磅值 有效值:light、normal、demi、bold
缺省值:normal
HorizontalAlignment 标签字符串的对齐方式 有效值:left、center、left
缺省值:决定于用户界面控制的对象
String 用户控制界面的标签,也是列表框与弹出菜单中的项目 有效值:字符串
控制回调函数的执行
BusyAction 回调函数中断方式 有效值:cancel、queue
缺省值:queue
ButtonDownFcn 当按钮按下时执行的回调函数 有效值:字符串
Callback 控制操作 有效值:字符串
CreateFcn 在对象生成过程中执行的回调函数 有效值:字符串
DeleteFcn 在对象删除过程中执行的回调函数 有效值:字符串
Interruptible 回调函数中断的模式 有效值:on、off
缺省值:on
UIContextMenu 与界面控制中的对象相关的菜单(如按下鼠标右键) 有效值:句柄
关于当前状态的一般信息
ListboxTop 第一个显示于列表框中的项目的索引 有效值:标量
缺省值:[1]
Max 最大值(与用户界面控制对象有关) 有效值:标量
缺省值:与系统有关
Min 最小值(与用户界面控制对象有关) 有效值:标量
缺省值:与系统有关
Value 用户界面控制对象的当前值 有效值:标量或向量
缺省值:与系统有关
控制组件的访问
HandleVisibility 句柄是否可从命令窗口中与GUIs中访问 有效值:on、callback、off
缺省值:on
HitTest 组件是否可由鼠标单击选中 有效值:on、off
缺省值:on
命令7 uimenu
功能 生成图形窗口的菜单中的层次的菜单与下一级子菜单。即增加新的菜单于已经存在的菜单后面,当一菜单项被选中时,该菜单项与它的下一级菜单也将显示。也可用该命令生成与组件相关的菜单。
用法 handle = uimenu('PropertyName',PropertyValue,…) 在当前图形窗口菜单条上用指定的属性PropertyName与相应的属性值PropertyValue创建一菜单,同时将该菜单的句柄赋给handle。其中两个输入参量可以是结构数组或者是单元数组。用户界面菜单的回调函数属性定义了当用户激活菜单项时,进行的响应操作。
uimenu('PropertyName',PropertyValue,…) 效果同上,但不返回句柄值。
handle = uimenu(parent,'PropertyName',PropertyValue,…) 生成一父菜单的子菜单,或者是生成由parent指定的相关菜单中的菜单项目。若parent不是另外的用户界面菜单对象或用户界面相关菜单对象,而是一图形窗口,则系统将生成该图形窗口菜单条上的新的菜单。同时将生成的菜单赋值给句柄handle。
uimenu(parent,'PropertyName',PropertyValue,…) 效果同上,但不返回菜单的句柄。
附:表7-13列出了所有对uimenu对象有用的属性,分别按功能进行了分类。每一属性名作为该属性描述的索引。
表7-13
属性名 属性名描述 属性值
控制控件类型与显示
Checked 菜单检查记号 有效值:on、off
缺省值:off
ForegroundColor 文本的颜色 有效值:ColorSpec
缺省值:黑色[0 0 0]
Label 菜单标签 有效值:任何字符串
Separator 分隔线模式 有效值:on、off
缺省值:off
SelectionHighlight 对象选中时是否突出显示 有效值:on、off
缺省值:on
Visible 用户界面菜单是否可见 有效值:on、off
缺省值:on
关于对象的一般信息
Acceleratro 键盘等价字符 有效值:任何的字符
Children 子菜单的句柄 有效值:句柄向量
Enable 用户界面菜单是否可用 有效值:on、off
缺省值:on
Parent 用户界面菜单的父对象 有效值:句柄
Tag 用户指定的对象标记符 有效值:任何字符串
Type 图形对象类型 有效值:字符串read-only
缺省值:uimenu
UserData 用户指定数据 有效值:任何矩阵
控制对象的位置
Position 用户界面菜单的相对位置 有效值:标量
缺省值:[1]
控制回调程序的执行
BusyAction 回调程序的中断 有效值:cancel、queue
缺省值:queue
ButtoDownFcn 按钮按下回调程序 有效值:字符串
Callback 控制操作 有效值:字符串
CreateFcn 在对象生成期间执行的回调程序 有效值:字符串
DeleteFcn 在对象删除期间执行的回调程序 有效值:字符串
Interruptible 回调程序中断模式 有效值:on、off
缺省值:on
控制对象的访问
HandleVisibility 是否可从命令行上访问图形用户界面 有效值:on、callback、off
缺省值:on
HitTest 是否可用鼠标选择 有效值:on、off
缺省值:on

2007-01-03 14:55
wangyou6699
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-6-1
收藏
得分:0 
7.3.2 轴的产生和控制命令
命令1 axes
功能 创建坐标轴图形对象。该命令是创建坐标轴图形对象的低级函数命令。
用法 axes 在当前图形窗口中用缺省的属性值创建一坐标轴图形对象。
axes('PropertyName',PropertyValue,…) 用参量'PropertyName'指定的属性名与用参量PropertyValue指定的属性值创建一坐标轴。对于没有指定的属性名,系统则使用缺省的属性值。
axes(h) 使已经存在的坐标轴h成为当前的坐标轴。同时使坐标轴h为图形窗口中的所有子对象属性(Children property)的第一坐标轴,也使图形窗口的CurrentAxes属性为h。当前坐标轴是图形函数image、line、patch、surface与text等命令输出图形对象的目的地。
h = axes(…) 返回已经创建的坐标轴对象的句柄。
命令2 cla
功能 清除当前坐标轴。该命令在命令窗口中执行与在回调程序中执行效果是一样的,即它不能区别由callback设置的属性HandleVisibility,也就是说,当它从一回调程序中执行时,命令cla仅仅删除属性HandleVisibility为on的图形对象。
用法 cla 清除当前坐标轴中所有句柄为不隐藏(例如,图形对象属性HandleVisibility设置为on)的图形对象。
cla reset 无条件地清除当前坐标轴中所有图形对象,且重新设置坐标轴的属性,(除了属性Position和Units)。
命令3 gca
功能 获取当前坐标轴句柄。
用法 h=gca 返回当前图形窗口中的坐标轴句柄。若坐标轴不存在,系统则生成一坐标轴同时返回它的句柄。用户不想得到上面的结果,可以输入get(gcf,’CurrentAxes’)。
当前坐标轴为用户创建坐标轴以下子对象的目的地。有许多图形命令可以在当前坐标轴中画出图形对象,如:plot,text,surf等。改变了当前窗口,相应地改变了当前坐标轴。
7.3.3 图形句柄操作命令
命令1 gco
功能 返回当前对象的句柄。“当前对象”为最后用鼠标单击的对象,除了命令uimenus之外。若鼠标没有单击到一图形对象之下的子对象,则该图形对象为“当前对象”。系统会把当前图形对象的句柄存放于图形的属性CurrentObject之中。当前图形窗口中的当前对象并非总是那些它们的回调函数,而是正在执行的对象。其他函数的回调中断函数可以改变当前对象或者甚至是当前图形窗口。一些回调函数,如生成命令CreateFcn、删除命令DeleteFcn与用户界面菜单命令Callback等就没有改变当前图形窗口或者当前对象。
用法 h = gco 返回当前对象的句柄给h。
h = gco(figure_handle) 返回指定窗口figure_handle中的当前对象的值。
命令2 get
功能 获取对象属性。
用法 get(h) 返回由句柄h指定的图形对象的所有属性与相应的当前属性值;
get(h,'PropertyName') 返回由句柄h指定的图形对象的指定属性PropertyName的属性值。
<m-by-n value cell array> = get(H,<property cell array>) 返回由m个图形对象的n个属性值组成的m*n阶的细胞数组,其中m=length(H),且n为指定的属性细胞数组<property cell of array>中包含的属性名个数。
a = get(h) 返回一结构,其中该结构的域名为该对象的属性名,结构的域名值为相应属性的当前值。H必须为标量。若用户没有指定输出参量,则系统将信息显示于屏幕之上。
a = get(0,'Factory') 返回所有能由用户设置的属性的缺省定义值。输出参量a为一结构数组,该结构的域名为对象的属性名,域名值为相应属性的当前值。若用户没有指定输出参量,则系统将信息显示于屏幕之上。
a = get(0,'FactoryObjectTypePropertyName') 返回指定对象类型的指定的属性的缺省属性值。输入参量FactoryObjectTypePropertyName为一关键字,由字符Factory与对象类型(如:Figure)还有属性名(如:Color)组成:FactoryFigureColor
a = get(h,'Default') 返回由句柄h指定的对象的所有缺省属性值。输出参量a为一结构,该结构的域名为缺省值对应的属性名。若用户没有指定输出参量,则系统将该结构信息显示于屏幕。
a = get(h,'DefaultObjectTypePropertyName') 返回对象类型的指定属性的缺省属性值。输入参量DefaultObjectTypePropertyName为一关键字,该字由字符Default与对象类型名(例如:Figure)还有具体的属性名(例如:Color)组成:DefaultFigureColor
例7-50
若想获得定义于屏幕之上的图形对象属性LineWidth的缺省属性值,输入:get(0,'DefaultLineLineWidth')
命令3 set
功能 设置对象的属性。
用法 set(H,'PropertyName',PropertyValue,…) 用属性值'PropertyValue'设置关于用参量H标志的对象(一个或多个)的属性名'PropertyName'(一个或多个)。H可以为一句柄的向量。在这种情形下,命令set可以设置所有对象的属性值。
set(H,a) 用指定的属性值设置由H标志的对象的属性。其中a为一结构数组,该结构数组的域名为对象的属性名,域名值为相应属性名的属性值。
set(H,pn,pv…) 对由H指定的所有对象中指定的细胞数组属性名pn设置为相应的细胞数组属性值pv。
set(H,pn,<m-by-n cell array>) 对于每m个图形对象设置n个属性值,其中m=length(H),n为包含属性名的细胞数组pn中包含的属性名个数。即允许用户对每一对象的指定的属性设置不同的属性值。
a= set(h) 返回句柄h中允许用户设置的属性名与可能的属性值。输出参量a为一结构数组,其域名为对象的属性名,域名值为相应的属性名对应的属性值。若没有指定输出参量a,则系统自动将信息显示于屏幕,h必须为标量。
a= set(0,'Factory') 返回那些用户可以设置缺省值的所有对象的属性名,同时显示可能的属性值,输出参量a为一结构数组,其域名为对象的属性名,域名值为相应的属性名对应的属性值,若没有指定输出参量a,则系统自动将信息显示于屏幕。
a= set(0,'FactoryObjectTypePropertyName')返回指定根对象(0)类型中指定的属性名ObjectTypePropertyName的所有可能的属性值。输入参量是由固定的关键字Factory、对象类型(如axes)与属性名(如position等)组成。
a= set(h,'Default') 返回由h标记的对象上缺省设置的值,其中h必须是标量。
a= set(h,'DefaultObjectTypePropertyName') 返回指定对象h的类型中指定的属性名ObjectTypePropertyName的所有可能的属性值。输入参量是由固定的关键字Factory、对象类型(如axes)与属性名(如position等)组成。
命令4 reset
功能 重新设置图形对象的属性为它们的缺省值。
用法 reset(h) 重新设置由句柄h指定的图形对象的属性为系统为它们设置的初始值。若h为一图形figure,该命令不能重新设置属性Position,Units,PaperPosition和PaperUnits;若h为一坐标轴axes,该命令不能重新设置属性Position和Units。
例7-51
reset(gca) %重新设置当前坐标轴的属性。
reset(gcf) %重新设置当前图形的属性。
命令5 delete
功能 删除文件或图形对象。作为一可供选择的函数,用户可从当前目录浏览器(Current Directory browser)中删除文件。要打开该浏览器,从MATLAB桌面上的View菜单中选择Current Directory命令。
用法 delete filename 从磁盘上删除指定的文件filename。参量filename可以是绝对路径或与当前路径相关的路径名。其中可以包括通配符(*)。
delete(h) 删除由句柄h指定的图形对象。该命令无条件地、直接地删除对象,甚至是图形窗口。
delete('filename') 这是第一种情形的函数形式。当文件名包含于字符串filename中时,使用函数形式。
例:
delete(‘D:\MATLABR12\work\*.m’) % 将删除指定目录上的所有.m文件。
命令6 findobj
功能 定位图形对象且返回它们的句柄。用户可用特定的属性值与沿着指定的层次分支来限定搜索条件。
用法 h = findobj返回根对象与它的所有的子孙对象句柄。
h = findobj('PropertyName',PropertyValue,…) 返回属性名PropertyName具有属性值PropertyValue的所有图形对象。用户可指定一对或多对PN与PV值,对此,findobj返回满足所有条件的那些对象。
h = findobj(objhandles,…) 限定搜索的对象为列表于objhandles中的对象与它们子孙对象。
h = findobj(objhandles,'flat','PropertyName',PropertyValue,…) 限定搜索对象为objhandles中列出的对象,而不包含它们的子孙对象。
7.3.4 图形窗口的控制命令
命令1 subplot
功能 生成与控制多个坐标轴。把当前图形窗口分隔成几个矩形部分,不同的部分是按行方向以数字进行标号的。每一部分有一坐标轴,后面的图形输出于当前的部分中。
用法 subplot(m,n,p) 将一图形窗口分成m*n个小窗口,在第p个小窗口中创建一坐标轴。则新的坐标轴成为当前坐标轴。若p为一向量,则创建一坐标轴,包含所有罗列在p中的小窗口。
subplot(h) 使句柄h对应的坐标轴称为当前的,用于后面图形的输出显示。
subplot('Position',[left bottom width height]) 在由4个元素指定的位置上创建一坐标轴。位置元素的单位为归一化单位。
h = subplot(…) 返回一新坐标的句柄于h。
命令2 hold
功能 保持当前图形窗口中的图形。该命令是决定是否在当前坐标轴中只能增加新的图形对象还是覆盖原有图形对象。测试保持状态命令为ishold。该命令可以设置当前坐标轴与当前图形的属性NextPlot。若一图形窗口中有多个坐标轴,则每个坐标轴有自己的保持状态。
用法 hold on 保留当前图形与当前坐标轴的属性值,后面的图形命令只能在当前存在的坐标轴中增加图形,即设置当前坐标轴属性NextPlot为add。当必要的时候,坐标轴的一些属性在增加新图时还是要进行相应的改变。例如,当新图形的数据范围超出了当前坐标轴的范围,则命令会自动地改变坐标轴的范围,使能显示新图形。
hold off 在画新图形之前,重新设置坐标轴的属性为缺省值。off是命令hold命令的缺省值。设置当前坐标轴的属性NextPlot为replace。
hold 在on与off之间转换。即在增加图形与覆盖图形之间切换。当坐标轴不存在时,则生成一坐标轴。同时使当前坐标轴属性NextPlot在add与replace之间切换。
命令3 gcf
功能 获得当前图形窗口的句柄。
用法 h = gcf 返回当前图形窗口的句柄。当前窗口为由命令plot、title与surf等得到的结果。若不存在图形窗口,则系统自动地生成一个,并返回它的句柄。若用户想当图形窗口不存在时,也不创建新的,则输入:get(0,'CurrentFigure')
命令4 clf
功能 清除当前图形窗口。该命令在命令窗口中执行与在回调程序中执行效果是一样的,即它不能区别由callback设置的属性HandleVisibility,也就是说,当它从一回调程序中执行时,命令clf仅仅删除属性HandleVisibility为on的图形对象。
用法 clf 清除所有当前图形窗口与窗口中的所有那些句柄为不隐藏(例如它们的属性HandleVisibility为on)的图形对象。
clf reset 无条件地清除当前图形窗口中所有的图形对象,且重新设置所有图形窗口属性为缺省值,除了属性Position,Units,PaperPosition,PaperUnits。
命令5 close
功能 删除指定的图形窗口。
用法 close 删除当前的图形窗口。
close(h) 删除由句柄h指定的图形窗口。若h为一向量或矩阵,则close全部删除其中每一分量指定的图形句柄。
close name 删除指定名字name的窗口。
close all 删除所有没有隐藏的图形。
close all hidden 删除所有具有隐藏的图形。
status = close(…) 若成功地删除了指定的对象则返回status=1,否则返回0。
命令6 newplot
功能 做好开始画新图形对象的准备。在高级图形m-文件的开始使用该命令,用于确定在哪一个图形窗口与坐标轴中输出图形。调用命令newplot能改变当前窗口与坐标轴。基本上,当要在已经存在的窗口与坐标轴中画图,有三个选项可选:
1.没有改变任何属性与删除任何对象,直接在当前坐标轴中增加新的图形对象;
2.在画图形的对象之前,删除所有存在于当前坐标轴中的,句柄为非隐藏的对象;
3.在画图形的对象之前,无条件删除所有的存在于当前坐标轴中的对象(不管句柄是否为隐藏),同时设置大部分的属性为缺省值;
4.首先,newplot读取当前图形的属性NextPlot的属性值(关于该属性的含义参见figure或axes的属性表),再执行相应的动作;
5.然后,newplot确定在哪一个窗口中画图,它读取当前图形的属性NextPlot的属性值,执行相应的操作。
用法 newplot 画好图形窗口与坐标轴,后面的图形命令就可以在该坐标轴内画图。
h = newplot 效果如上,且返回当前坐标轴的句柄给h。

2007-01-03 14:55
wangyou6699
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-6-1
收藏
得分:0 
7.4 颜色与光照模式命令
7.4.1 颜色控制命令
命令1 colormap
功能 设置或获取当前色图。色图为一个m*3的、元素在0到1之间的实数的矩阵,每一行为定义一个颜色的RGB向量。色图矩阵的第k行定义了第k个颜色,其中 map(k,:)=[r(k) g(k) b(k)]指定了组成该颜色中红色、绿色、兰色的强度。
用法 colormap(map) 通过矩阵map设置色图。若矩阵map中的元素不在[0 1]区间之内,则返回一个错误。在目录color中的m-文件能够生成许多色图,每一个m-文件能够接受颜色数作为函数参数,例如命令colormap(hsv(64))生成了有64种颜色的hsv色图。若用户没有指定颜色数,例如命令colormap(hsv),生成与当前色图中颜色数相同的hsv色图。MATLAB支持的色图见表7-14。
表7-14
色图名称 包含的颜色范围
Cool 青蓝和洋红的色度
Bone 带一点蓝色的灰度
Flag 交替为红色、白色、蓝色和黑色
Jet Hsv的一种变形(以兰色开始和结束)
Copper 线性铜色度
Hsv 色彩饱和值(以红色开始和结束)
Hot 从黑色到黄色到白色
Gray 线性灰度
Pink 粉红的彩色度
Prim 三棱镜。交替为红色、橘黄色、黄色、绿色和天蓝色
Lines 线性色图
White 全白色图
Colorcube 增强立方色图
Autumn 红色黄色阴影色图
Spring 洋红黄色阴影色图
Summer 绿色黄色阴影色图
Winter 兰色绿色阴影色图
例7-52
colormap('default') 设置当前色图为缺省色图。
cmap = colormap 获取当前色图矩阵。
命令2 bone
功能 生成带淡兰色的灰度刻度化的色图。
用法 bone(m) 返回个一个阶数为m*3的包含“bone”的色图。
bone 返回一个与当前色图行数相同的色图。
命令3 cool
功能 生成带阴影的青色和品红的色图。
用法 cool(m) 返回一个阶数为m*3的包含“cool”的色图。
cool 返回一个与当前色图行数相同的色图。
命令4 copper
功能 生成线性铜色色图。
用法 copper(m)返回一个阶数为m*3的包含“copper”的色图。
copper 返回一个与当前色图行数相同的色图。
命令5 flag
功能 生成一个颜色顺序为红、白、兰、黑的色图。
用法 flag(m)返回一个阶数为m*3的包含“flag”的色图。增加m的值,会增加色图的颗粒程度。
flag 返回一个与当前色图函数相同的色图。
命令6 gray
功能 生成一个线性灰度化的色图。
用法 gray(m)返回个一个阶数为m*3的包含灰度化的的色图。
gray 返回一个与当前色图函数相同的色图。
命令7 hot
功能 生成一个颜色顺序为黑、红、黄、白的色图。
用法 hot(m)返回个一个阶数为m*3的包含“hot”的色图。
hot 返回一个与当前色图函数相同的色图。
命令8 hsv
功能 生成一个包含色度-饱和度值的色图。一个hsv色图包含各种饱和色度颜色的色度的成分。其颜色从红色到黄色、绿色、青色、蓝色、品红,最后返回红色。该色图对于显示周期函数很有用处。
用法 hsv(m)返回个一个阶数为m*3的包含hsv的色图。
hsv 返回一个与当前色图函数相同的色图。
命令9 jet
功能 不同于hsv色图的另外一种色图。
用法 jet(m)返回个一个阶数为m*3的,与hsv(m)不同的色图,用于显示NCSA流体激光图片。
jet 返回一个与当前色图函数相同的色图。
命令10 pink
功能 生成一个带柔和阴影粉红色图。
用法 pink(m)返回一个阶数为m*3的包含“pink”的色图。
pink 返回一个与当前色图函数相同的色图。
命令11 prism
功能:生成一个三棱镜色图。如同hsv色图一样,prism色图中的颜色使用顺序是一样的,不同的是,命令prism重复使用它的六中颜色,而命令hsv是连续地变换它的颜色。
用法 prism(m)返回一个阶数为m*3的包含六种循环使用的颜色:红色、橙色、黄色、绿色、蓝色、紫色。
prism 这种没有任何输入输出参量的形式,改变当前坐标轴中的线对象的颜色为三棱镜中的颜色。
7.4.2 色图控制命令
命令1 brighten
功能 增亮或变暗色图。
用法 brighten(beta) 增亮或变暗当前的色图。若0<beta<1,则增亮色图;若-1<beta<0,则变暗色图。改变的色图将代替原来的色图,但本质上是相同的颜色。
brighten(h,beta) 对指定的句柄对象h中的子对象进行操作。
newmap = brighten(beta) 该命令没有改变当前图形的亮度,而是返回变化后的色图给newmap。
newmap = brighten(cmap,beta) 该命令没有改变指定色图cmap的亮度,而是返回变化后的色图给newmap。
命令2 colorbar
功能 显示能指定颜色刻度的颜色条。且调整当前坐标轴,以适应当前的颜色条。
用法 colorbar 更新最近生成的颜色条。或若当前坐标轴没有一颜色条,则在右边显示一垂直的颜色条。
colorbar('vert') 增加一垂直的颜色条到当前的坐标轴。
colorbar('horiz') 增加一水平的颜色条到当前的坐标轴。
colorbar(h) 用坐标轴h来生成一颜色条。若坐标轴的宽度大于高度,则颜色条是水平放置的。
h = colorbar(…)返回一颜色条句柄h,该句柄是一坐标轴对象。
colorbar(…,'peer',axes_handle) 生成一与坐标轴axes-handle有关的颜色条,代替当前的坐标轴。
命令3 contrast
功能 提高灰度色图的对比度。该命令可以增强图像的对比度。
用法 cmap = contrast(X) 返回一灰度色图,该色图与当前色图有相同的维数。参量cmap为生成的灰度色图。
cmap = contrast(X,m) 返回维数为m*3的灰度色图cmap。
例7-53
>>load clown;
>>cmap = contrast(X);
>>image(X);
>>colormap(cmap);
命令4 rgbplot
功能 画出色图。
用法 rgbplot(cmap) 画出维数为m*3的色图矩阵cmap的每一列,矩阵的第一列为红色强度,第二列为绿色强度,第三列为蓝色强度。
命令5 diffuse
功能 漫反射率。
用法 R = diffuse(Nx,Ny,Nz,S) 返回曲面的漫反射率向量[Nx,Ny,Nz],S为一三维向量,用于定义光源的方向;S也可以为球面坐标系中的二维向量[Theta,Phi]。
Lambert定律:R = cos(PST),其中PST为曲面法线与光源方向之间夹角。
命令6 specular
功能 镜面反射率。
用法 R = specular(Nx,Ny,Nz,S,V,spread) 返回一曲面的镜面反射率向量[Nx,Ny,Nz],向量参量S与V分别用于指定光源位置与观察点的位置。它们可以为三维直角坐标系向量[x,y,z]或者为二维球面向量[Theta,Phi]。当标准向量的方向为(S+V)/2,则镜面的高光效果最强。第六个参量spread为镜面反射扩散系数。
命令7 surfl
功能 三维带光照模式的阴影图。图形的色泽取决于曲面的漫反射、镜面反射与环境光照模式。
用法 surfl(…)效果与命令surf(…)基本上一样,除了它受光源影响的曲面之外。
surfl(Z)、surfl(X,Y,Z)、surfl(Z,S)、surfl(X,Y,Z,S)、surfl(X,Y,Z,S,K) 这些都是有效的使用形式。若参数中有S,则为一三维向量[Sx,Sy,Sz],用于指定光源的方向。S也可视为点坐标系下的二维向量[AZ,EL]。S的缺省值为从当前观察方向逆时针旋转45度。使用命令组cla;hold on;view(AZ,EL);surfl(…);hold off等可画出视角方向为(AZ,EL)的带光照模式的曲面图。第五参数K=[ka,kd,ks,
spread]指定环境光、漫反射光、镜面反射光、扩散系数等的强弱。
surfl(…,'light') 用LIGHT对象生成一带颜色的、带光照模式的曲面。该命令可以生成与用缺省光照模式不同效果的曲面。
surfl(…,'cdata') 指定的曲面的反射光的颜色为cdata。
H = surfl(…) 返回曲面与光源的句柄。

2007-01-03 14:55
快速回复:第7章 绘图与图形处理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033265 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved