06_第六讲_高级图形处理功能
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
wk.baidu.com
clc;clear;close all; subplot('position',[0.1,0.5,0.2,0.2]) [X0,Y0,Z0]=sphere(20); X=0.1*X0;Y=0.1*Y0;Z=0.1*Z0; h1 = surf(X,Y,Z) ; shading interp hidden off ; axis equal ; axis off h2 = subplot('position',[0.1,0.1,0.8,0.4]) h3 = surf(5*membrane) ; light; Lighting none set(gcf, 'Color',[ 0 0 0 ] ) ; set( h1, 'facecolor', 'y' ) ; set( h2, 'Visible', 'off', 'XGrid','off', 'Ygrid', 'off', 'zgrid', 'off' ); set( h3, 'Edgecolor', 'g', 'facecolor', 'b' ) ;
13
【例6-2】 h=surf(sphere(30)); figure h=surf(sphere(30)); set(h,'EdgeColor','g')
14
【例6-3】作正弦、余弦曲线,将正弦曲线改为虚 线,将余弦曲线幅度减为1/2高度
1 0.8 0.6
0.4
0.2
0
-0.2
1
0 1 2 3 4 5 6 7
第6章 高级图形处理功能
内容提要:
6.1 6.3 6.4 6.5 图形对象与句柄 体积可视化 图形窗口的功能及设置 其他图形处理技术
1
高层绘图与底层绘图的区别
高层绘图函数——是对整个图形进行操作的, 图形每一部分的属性都是按缺省方式设置的, 充分体现了matlab语言的实用性。
底层绘图函数——可以定制图形,对图形的 每一部分进行控制,用户可以用来开发用户 界面以及各专业的专用图形。充分体现了 matlab语言的开发性
camlight; lighting gouraud
31
32
6.4
图形窗口的功能及设置
33
6.4.1 图形复制参数设置
操作过程(在图形窗口下): File → Preferences → Figure → Copy Template
34
6.4.2 图形对象设置
1)图形窗口(figure) 对象图形窗口中edit→Figure properties
17
【例6-4】用句柄修改图形
18
clc;clear;close all; subplot('position',[0.1,0.5,0.2,0.2]) [X0,Y0,Z0]=sphere(20); X=0.1*X0;Y=0.1*Y0;Z=0.1*Z0; surf(X,Y, Z) shading interp hidden off ; axis equal ; axis off subplot('position',[0.1,0.1,0.8,0.4]) surf(5*membrane) light; Lighting none
流点的属性名称 Animate FrameRate ParticleAlignment 属性描述 流点动画,可设置动画重 复次数 动画频率 流点是否与流线对齐
27
【例6-14】利用wind绘制流点图。
load wind [sx sy sz] = meshgrid(80,20:1:55,5); verts = stream3(x,y,z,u,v,w,sx,sy,sz); sl = streamline(verts); iverts = interpstreamspeed(x,y,z,u,v,w,verts,.025); axis tight; view(30,30); daspect([1 1 .125]) camproj perspective; camva(8) set(gca,'DrawMode','fast') box on streamparticles(iverts,35,'animate',10,'ParticleAlign ment','on')
句柄的值:是一个数或者一个矢量。
作用:利用句柄既可以操纵一个已经存在的 图形对象的属性,也可以在建立图形对象时指定 属性的值。
根屏幕 图形窗口 其它对象 0 整数,表示图形窗口序号 对应的实数
8
例:创建1号窗口,返回句柄
h=figure(1)
h=1 返回值为窗口号数 例:h=line (1:6,1:6) 创建线对象的同时也建立其唯一的句柄 例:h=surf(peaks)
2
6.1 图形对象与句柄
3
图形对象
图形对象是图形系统中最基本、最底 层的单元
窗口对象 线 对 象
轴对象
4
Root (根屏幕) Figure (图形窗口)
父对象
子对象
Axes (坐标轴)
Uicontrol (控件)
Uimenu (菜单)
Uicontextmenu (对象菜单)
image (图像)
指定绘制流线图的选项,options可以定 义为只有一个元素的矢量(步长)或有 两个元素的矢量(步长和流线顶点的最 大个数)。不定义则默认。
23
【例6-13】利用数据集wind绘制流线图。
load wind
[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
h = streamline(x,y,z,u,v,w,sx,sy,sz);
格式: h=uimenu(‘property’,value)
axes 创建轴对象
格式: h=axes(‘position’,[left, bottom
6 width,height ])
line 创建线对象
h=line(x,y,z)
patch 创建块对象 h=patch(x,y,z,c) x,y,z定义多边形,c确定填充颜色。 surface 创建面对象 h=surface(x,y,z,c)
35
2) 坐标轴对象(axes) 图形窗口中edit → axis → propertie 打开坐标轴对象参数设置窗口。
36
3)线对象(line) edit→Current Object properties, 打开线对 象参数设置窗口
37
4) 面对象(surface) edit →Current Object properties, 打 开面对象参数设置窗口 ♫ Data(数据) ♫ style(绘图样式,如绘图曲面的颜色, 绘图点类型、尺寸、边缘颜色等) ♫ color (颜色) ♫ Transparency(透明处理,设置曲面和 网格的透明度) ♫ lighting (光照) ♫ Info(信息)
21
h=streamline(U,V,W,startx,starty,startz)
此时,假定[X,Y,Z]=meshgrid(1:N,1:M,1:P) , 其中[M,N,P]=size(U) h=streamline(X,Y,Z)
X,Y,Z为单元数组,该数组是由顶点数据计算 得到的
22
h=streamline(X,Y,U,V,,startx,starty) 绘制二维矢量流线图 h=streamline(…,options)
set(h,'Color','red') view(3)
24
25
6.3.2 流点图 streamparticles
streamparticles(vertices) 绘制矢量的流点图 , 流点由标记代表 , 可 以显示流线的位置和速率,vertices为一个 二维或三维矢量的单元数组
26
streamparticles(…,’PropertyName’,’Pro pertyValue’,…) 使用指定的属性和指定值控制流点.
light (光源)
line (线)
patch rectangle surface text (面) (文本) (块) (矩形)
5
各层次图形对象是相互关联的,一般要先 创建父对象,再创建子对象 。 创建图形对象的底层函数
figure创建图形窗口
uicontrol图形界面控制
格式: h=uicontrol(‘property’,value) uimenu创建用户界面菜单
-0.4
-0.6
-0.8
-1
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
0 .5
0 1 2 3 4 5 6 7
-0.6
-0.8
-1
15
x=0:2*pi/180:2*pi; y1=sin(x);y2=cos(x); plot(x,y1,x,y2,x,zeros(size(x) ),‘k:')
1
0.8
11
【例6-1】绘制正弦曲线,修改线为红色并加宽, 自定义坐标轴的显示刻度,设置窗口黑色。
12
t=-pi:pi/20:pi; y=sin(t); h=plot(t,y) set(h,‘Color','r','LineWidth' ,3) ha=gca set(gca,‘XTick',[-pi:pi/2:pi],... ‘XTickLabel',{'-pi','-pi/2','0','pi/2','pi'}, ‘Color','k') hf=gcf set(hf,‘Name','NO.1 sin(x)')
x,y,z三维曲面坐标,c颜色矩阵。 image 显示图象
h=image(x); x为图像矩阵
text 标注文字
h=text(x,y,’string’)
每个底层函数只能创建一个图形对象, 并将它们置于适当的父辈对象中。
7
图形句柄
handle
句柄:一个对象从创建时就被赋予唯一标识。
19
6.3 体积可视化
20
6.3.1 流线图 streamline
h=streamline(X,Y,Z,U,V,W,startx,sta rty,startz)
绘制三维矢量数据U,V,W的流线图并 返回图形对象的柄。 数组X,Y,Z定义了U,V,W的坐标;
startx, starty, startz 定义了流线 图的起点位置。
10
专用函数:
gcf gca gco 获取当前图形窗口的句柄 Get Current Figure 获取当前坐标轴的句柄 Get Current Axes 获取当前图形对象的句柄 Get Current Object
格式: h=gcf 将当前窗口对象的句柄返回h get(h)或get(gcf) 查阅当前窗口对象的属性 delete(gcf) 删除当前窗口的属性 get(gcf,’children’)当前窗口对象的子代
30
【例6-15】利用wind绘制流带图。
load wind [sx sy sz] = meshgrid(80,20:10:50,0:5:15);
daspect([1 1 1])
streamribbon(x,y,z,u,v,w,sx,sy,sz); axis tight shading interp; view(3);
28
29
6.3.3 流带图 streamribbon
streamribbon(X,Y,Z,U,V,W,startx,sta rty,startz)
绘制三维矢量数据 U 、 V 、 W 的流带图 , 数 组X、Y、Z定义了U、V、W的坐标,startx、 starty、startz定义了流带图的起点位置
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
1
2
3
4
5
6
7
16
首先查询各对象的属性 get(gcf) … h=get(gcf,'children') h = 60.0004 hh=get(gca,'children') hh = 70.0004 69.0004
68.0004
修改属性
y11=get(hh(2),'ydata'); y22=y11/2; set(hh(2),'ydata',y22) set(hh(3),'linestyle',':')
9
获得与设置句柄所代表的图形对象的属性
句柄属性的设置与修改
get 获得句柄图形对象的属性 set 改变图形对象的属性
格式: get(h,`属性名`) 获得指定对象的指定的属性 get(h) 获得指定对象的全部属性 set(h,`属性名`,`属性值`) 设置指定对象的属性 set(h): 显示指定对象的全部可设置属性及选项
clc;clear;close all; subplot('position',[0.1,0.5,0.2,0.2]) [X0,Y0,Z0]=sphere(20); X=0.1*X0;Y=0.1*Y0;Z=0.1*Z0; h1 = surf(X,Y,Z) ; shading interp hidden off ; axis equal ; axis off h2 = subplot('position',[0.1,0.1,0.8,0.4]) h3 = surf(5*membrane) ; light; Lighting none set(gcf, 'Color',[ 0 0 0 ] ) ; set( h1, 'facecolor', 'y' ) ; set( h2, 'Visible', 'off', 'XGrid','off', 'Ygrid', 'off', 'zgrid', 'off' ); set( h3, 'Edgecolor', 'g', 'facecolor', 'b' ) ;
13
【例6-2】 h=surf(sphere(30)); figure h=surf(sphere(30)); set(h,'EdgeColor','g')
14
【例6-3】作正弦、余弦曲线,将正弦曲线改为虚 线,将余弦曲线幅度减为1/2高度
1 0.8 0.6
0.4
0.2
0
-0.2
1
0 1 2 3 4 5 6 7
第6章 高级图形处理功能
内容提要:
6.1 6.3 6.4 6.5 图形对象与句柄 体积可视化 图形窗口的功能及设置 其他图形处理技术
1
高层绘图与底层绘图的区别
高层绘图函数——是对整个图形进行操作的, 图形每一部分的属性都是按缺省方式设置的, 充分体现了matlab语言的实用性。
底层绘图函数——可以定制图形,对图形的 每一部分进行控制,用户可以用来开发用户 界面以及各专业的专用图形。充分体现了 matlab语言的开发性
camlight; lighting gouraud
31
32
6.4
图形窗口的功能及设置
33
6.4.1 图形复制参数设置
操作过程(在图形窗口下): File → Preferences → Figure → Copy Template
34
6.4.2 图形对象设置
1)图形窗口(figure) 对象图形窗口中edit→Figure properties
17
【例6-4】用句柄修改图形
18
clc;clear;close all; subplot('position',[0.1,0.5,0.2,0.2]) [X0,Y0,Z0]=sphere(20); X=0.1*X0;Y=0.1*Y0;Z=0.1*Z0; surf(X,Y, Z) shading interp hidden off ; axis equal ; axis off subplot('position',[0.1,0.1,0.8,0.4]) surf(5*membrane) light; Lighting none
流点的属性名称 Animate FrameRate ParticleAlignment 属性描述 流点动画,可设置动画重 复次数 动画频率 流点是否与流线对齐
27
【例6-14】利用wind绘制流点图。
load wind [sx sy sz] = meshgrid(80,20:1:55,5); verts = stream3(x,y,z,u,v,w,sx,sy,sz); sl = streamline(verts); iverts = interpstreamspeed(x,y,z,u,v,w,verts,.025); axis tight; view(30,30); daspect([1 1 .125]) camproj perspective; camva(8) set(gca,'DrawMode','fast') box on streamparticles(iverts,35,'animate',10,'ParticleAlign ment','on')
句柄的值:是一个数或者一个矢量。
作用:利用句柄既可以操纵一个已经存在的 图形对象的属性,也可以在建立图形对象时指定 属性的值。
根屏幕 图形窗口 其它对象 0 整数,表示图形窗口序号 对应的实数
8
例:创建1号窗口,返回句柄
h=figure(1)
h=1 返回值为窗口号数 例:h=line (1:6,1:6) 创建线对象的同时也建立其唯一的句柄 例:h=surf(peaks)
2
6.1 图形对象与句柄
3
图形对象
图形对象是图形系统中最基本、最底 层的单元
窗口对象 线 对 象
轴对象
4
Root (根屏幕) Figure (图形窗口)
父对象
子对象
Axes (坐标轴)
Uicontrol (控件)
Uimenu (菜单)
Uicontextmenu (对象菜单)
image (图像)
指定绘制流线图的选项,options可以定 义为只有一个元素的矢量(步长)或有 两个元素的矢量(步长和流线顶点的最 大个数)。不定义则默认。
23
【例6-13】利用数据集wind绘制流线图。
load wind
[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
h = streamline(x,y,z,u,v,w,sx,sy,sz);
格式: h=uimenu(‘property’,value)
axes 创建轴对象
格式: h=axes(‘position’,[left, bottom
6 width,height ])
line 创建线对象
h=line(x,y,z)
patch 创建块对象 h=patch(x,y,z,c) x,y,z定义多边形,c确定填充颜色。 surface 创建面对象 h=surface(x,y,z,c)
35
2) 坐标轴对象(axes) 图形窗口中edit → axis → propertie 打开坐标轴对象参数设置窗口。
36
3)线对象(line) edit→Current Object properties, 打开线对 象参数设置窗口
37
4) 面对象(surface) edit →Current Object properties, 打 开面对象参数设置窗口 ♫ Data(数据) ♫ style(绘图样式,如绘图曲面的颜色, 绘图点类型、尺寸、边缘颜色等) ♫ color (颜色) ♫ Transparency(透明处理,设置曲面和 网格的透明度) ♫ lighting (光照) ♫ Info(信息)
21
h=streamline(U,V,W,startx,starty,startz)
此时,假定[X,Y,Z]=meshgrid(1:N,1:M,1:P) , 其中[M,N,P]=size(U) h=streamline(X,Y,Z)
X,Y,Z为单元数组,该数组是由顶点数据计算 得到的
22
h=streamline(X,Y,U,V,,startx,starty) 绘制二维矢量流线图 h=streamline(…,options)
set(h,'Color','red') view(3)
24
25
6.3.2 流点图 streamparticles
streamparticles(vertices) 绘制矢量的流点图 , 流点由标记代表 , 可 以显示流线的位置和速率,vertices为一个 二维或三维矢量的单元数组
26
streamparticles(…,’PropertyName’,’Pro pertyValue’,…) 使用指定的属性和指定值控制流点.
light (光源)
line (线)
patch rectangle surface text (面) (文本) (块) (矩形)
5
各层次图形对象是相互关联的,一般要先 创建父对象,再创建子对象 。 创建图形对象的底层函数
figure创建图形窗口
uicontrol图形界面控制
格式: h=uicontrol(‘property’,value) uimenu创建用户界面菜单
-0.4
-0.6
-0.8
-1
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
0 .5
0 1 2 3 4 5 6 7
-0.6
-0.8
-1
15
x=0:2*pi/180:2*pi; y1=sin(x);y2=cos(x); plot(x,y1,x,y2,x,zeros(size(x) ),‘k:')
1
0.8
11
【例6-1】绘制正弦曲线,修改线为红色并加宽, 自定义坐标轴的显示刻度,设置窗口黑色。
12
t=-pi:pi/20:pi; y=sin(t); h=plot(t,y) set(h,‘Color','r','LineWidth' ,3) ha=gca set(gca,‘XTick',[-pi:pi/2:pi],... ‘XTickLabel',{'-pi','-pi/2','0','pi/2','pi'}, ‘Color','k') hf=gcf set(hf,‘Name','NO.1 sin(x)')
x,y,z三维曲面坐标,c颜色矩阵。 image 显示图象
h=image(x); x为图像矩阵
text 标注文字
h=text(x,y,’string’)
每个底层函数只能创建一个图形对象, 并将它们置于适当的父辈对象中。
7
图形句柄
handle
句柄:一个对象从创建时就被赋予唯一标识。
19
6.3 体积可视化
20
6.3.1 流线图 streamline
h=streamline(X,Y,Z,U,V,W,startx,sta rty,startz)
绘制三维矢量数据U,V,W的流线图并 返回图形对象的柄。 数组X,Y,Z定义了U,V,W的坐标;
startx, starty, startz 定义了流线 图的起点位置。
10
专用函数:
gcf gca gco 获取当前图形窗口的句柄 Get Current Figure 获取当前坐标轴的句柄 Get Current Axes 获取当前图形对象的句柄 Get Current Object
格式: h=gcf 将当前窗口对象的句柄返回h get(h)或get(gcf) 查阅当前窗口对象的属性 delete(gcf) 删除当前窗口的属性 get(gcf,’children’)当前窗口对象的子代
30
【例6-15】利用wind绘制流带图。
load wind [sx sy sz] = meshgrid(80,20:10:50,0:5:15);
daspect([1 1 1])
streamribbon(x,y,z,u,v,w,sx,sy,sz); axis tight shading interp; view(3);
28
29
6.3.3 流带图 streamribbon
streamribbon(X,Y,Z,U,V,W,startx,sta rty,startz)
绘制三维矢量数据 U 、 V 、 W 的流带图 , 数 组X、Y、Z定义了U、V、W的坐标,startx、 starty、startz定义了流带图的起点位置
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
1
2
3
4
5
6
7
16
首先查询各对象的属性 get(gcf) … h=get(gcf,'children') h = 60.0004 hh=get(gca,'children') hh = 70.0004 69.0004
68.0004
修改属性
y11=get(hh(2),'ydata'); y22=y11/2; set(hh(2),'ydata',y22) set(hh(3),'linestyle',':')
9
获得与设置句柄所代表的图形对象的属性
句柄属性的设置与修改
get 获得句柄图形对象的属性 set 改变图形对象的属性
格式: get(h,`属性名`) 获得指定对象的指定的属性 get(h) 获得指定对象的全部属性 set(h,`属性名`,`属性值`) 设置指定对象的属性 set(h): 显示指定对象的全部可设置属性及选项